我从 GAE 文档中了解到,生产服务器时区始终是 UTC。在本地开发时,服务器时区设置为 CET。有没有办法强制本地开发服务器也运行在 UTC 上?
开发服务器在 Mac OS 上运行。
谢谢,
雨果
我从 GAE 文档中了解到,生产服务器时区始终是 UTC。在本地开发时,服务器时区设置为 CET。有没有办法强制本地开发服务器也运行在 UTC 上?
开发服务器在 Mac OS 上运行。
谢谢,
雨果
刚刚找到了答案。为了设置服务器时区,只需进入 Eclipse,“运行配置”,然后“VM 参数”并添加以下“-Duser.timezone=UTC”。
在这种情况下,这会将服务器时区设置为您想要的值 (UTC)。这真的很方便,因为 Google App Engine 生产将始终运行 UTC,而开发服务器(至少在我的情况下)使用本地时区运行。最终结果是我在开发和产品之间有不同的行为。
雨果
好吧,您可以在将日期值保存到数据存储区以转换为您的特定时区时使用它。
DateFormat utcFormat = new SimpleDateFormat(patternString);
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
DateFormat indianFormat = new SimpleDateFormat(patternString);
utcFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
Date timestamp = utcFormat.parse(inputString);
String output = indianFormat.format(timestamp);
GAE devServer 默认使用本地时区。
我使用此代码将其强制为 UTC:
boolean isDevEnvironment = SystemProperty.environment.value() == SystemProperty.Environment.Value.Development;
if (isDevEnvironment) {
TimeZone.setDefault(DateTimeZone.UTC.toTimeZone());
DateTimeZone.setDefault(DateTimeZone.UTC);
}
您需要在服务器启动和初始化期间运行一次。