我从GAE文档中了解到生产服务器时区始终是UTC。在本地开发时,服务器时区设置为CET。有没有办法强制本地开发服务器也能在UTC上运行?
开发服务器在Mac OS上运行。
谢谢,
格·
答案 0 :(得分:4)
jut找到了答案。要设置服务器时区,只需进入Eclipse,“运行配置”,然后“VM参数”并添加以下“-Duser.timezone = UTC”。
在这种情况下,这会将服务器时区设置为您想要的值(UTC)。这非常方便,因为Google App Engine生产将始终运行UTC,而开发服务器(至少在我的情况下)使用本地时区运行。实际效果是我在开发和生产之间有不同的行为。
格·
答案 1 :(得分:2)
您可以在将日期值保存到数据存储区时将其用于转换为特定时区。
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);
答案 2 :(得分:1)
GAE devServer默认使用本地时区。
我使用此代码将其强制为UTC:
boolean isDevEnvironment = SystemProperty.environment.value() == SystemProperty.Environment.Value.Development;
if (isDevEnvironment) {
TimeZone.setDefault(DateTimeZone.UTC.toTimeZone());
DateTimeZone.setDefault(DateTimeZone.UTC);
}
您需要在服务器启动和初始化期间运行一次。