我的一个项目实现了下面的方法,我正在研究日期问题之一,并试图了解下面的方法,它将给定日期转换为GMT,但与输出混淆。时区与getRawOffset方法混淆
输入日期值:2010-11-29 04:00:00.0
输出日期值:太阳11月28日20:00:00 PST 2010
我的机器是在太平洋时区(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时间代替 – Anto
我的建议不要试图理解此代码。你应该试着去了解什么是意图或目标,然后从头开始编写新的代码。这很容易。 –