【问题标题】:CloudFoundry TimezoneCloudFoundry 时区
【发布时间】:2015-08-28 17:59:31
【问题描述】:
我开发了一个非常(JodaTime)以 DateTime 为中心的应用程序(日历等)。在我的计算机上本地一切正常。我已经在 cloudfoundry 部署了我的应用程序,日历中没有显示日期。
我想这与cloudfoundry的时区有关。我已将本地运行的应用程序连接到 coud 中的 mongodb 数据库,一切正常。
我现在的问题是如何将 cloudfoundry 的时区更改为 CEST (MEZ)?
非常感谢!
【问题讨论】:
标签:
timezone
cloud-foundry
【解决方案1】:
您的 Java 应用程序将在 Linux 容器中运行,因此您可以使用任何 Linux 或 Java 方法来设置时区。
最容易想到的...
cf set-env <app-name> TZ 'America/Los_Angeles'
cf restage <app-name>
或
cf set-env <app-name> JAVA_OPTS '-Duser.timezone=Europe/Sofia'
cf restage <app-name>
第一个对于任何尊重 TZ 环境变量的应用程序都应该是通用的。第二个是特定于 Java 的。
如果您不想使用cf set-env,您也可以通过manifest.yml 文件设置环境变量。
【解决方案2】:
扩展@DanielMikusa。 (很好的答案)
清单样本:
applications:
- path: .
buildpack: nodejs_buildpack
memory: 128M
instances: 1
name: sampleCronJobService
health-check-type: process
disk_quota: 1024M
env:
TZ: Etc/Greenwich
CF_STAGING_TIMEOUT: 15
CF_STARTUP_TIMEOUT: 15
TIMEOUT: 180
SuperSecret: passwordToTheWorld
为什么我知道它有效:
var date = new Date();
var utc_hour = date.getUTCHours();
var local_hour = date.getHours();
console.log('(Timezone) Local Hour: ' + local_hour + ' UTC Hour: ' + utc_hour);
打印:(Timezone) Local Hour: 23 UTC Hour: 23
如果我将清单设置为 TZ: America/Los_Angeles
打印:(Timezone) Local Hour: 16 UTC Hour: 23