【发布时间】:2011-01-07 21:14:13
【问题描述】:
我有一个日期作为 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”,一天后!
当然,由于错误发生在 prod 服务器上,我的调试选项受到限制...
我已经仔细检查过,两台服务器的时间和时区都相同。两个时钟都与 ntp 服务器同步。
[UPDATE] prod 中的数据库的日期字段值为:“10-01-20 19:10:35,743000000”
【问题讨论】:
标签: java date timezone simpledateformat