【发布时间】:2014-03-13 11:26:06
【问题描述】:
我的一个项目实现了以下方法,我正在研究日期问题之一,并试图了解以下将给定日期转换为 GMT 的方法,但与输出混淆。
输入日期值:2010-11-29 04:00:00.0
输出日期值:2010 年 11 月 28 日星期日 20:00:00 PST
我的机器在太平洋时区 (PST) 运行,如果它返回 GMT,我预计“2010-11-29 11:00:00.0”,您能否说明 getRawOffset() 方法的用途和为什么它会返回那个输出?
public static Date convertToGMT(Date date) {
TimeZone jvmTimeZone = TimeZone.getDefault();
long newTime = date.getTime() + jvmTimeZone.getRawOffset();
if (jvmTimeZone.inDaylightTime(date)) {
newTime = newTime + jvmTimeZone.getDSTSavings();
}
return new Date(newTime);
}
【问题讨论】:
-
作为建议,避免使用 TimeZone 库,这太糟糕了。改用 Joda Time
-
我的建议不要试图理解这段代码。您应该尝试了解意图或目标是什么,然后从头开始编写新代码。这更容易。