我有一个日期作为 java.sql.Timestamp 存储在数据库中。日期为“2010-01-20T19:10:35.000Z”,相当于 1264014635743 毫秒。
不知何故,与开发机器相比,生产机器上的日期格式不同。
格式化日期的代码是:
private final static String DATE_FORMAT = "yyyy-MM-dd";
public final static SimpleDateFormat APP_DATE_FORMATER = new SimpleDateFormat(DATE_FORMAT);
private static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("Etc/UTC");
APP_DATE_FORMATER.setTimeZone(UTC_TIMEZONE);
DateTimeZone.setDefault(DateTimeZone.UTC);
String output = APP_DATE_FORMATER.format(date)
dev 中生成的输出是正确的“2010-01-20”。但是在产品中我有“2010-01-21”,一天后!
当然,由于错误发生在产品服务器上,我的调试选项受到限制......
我已经仔细检查过,两台服务器都有相同的时间和时区。两个时钟都与 ntp 服务器同步。
[更新] prod 中的数据库的值为:日期字段的“10-01-20 19:10:35,743000000”