我正在尝试使用Joda Time将本地日期转换为UTC。我使用的代码如下所示,效果很好。
Date localDate = new Date();
System.out.println("Local Date : " + localDate);
DateTimeZone tz = DateTimeZone.getDefault();
Date utcDate = new Date(tz.convertLocalToUTC(localDate.getTime(), false));
System.out.println("UTC Date : " + utcDate);
Output :
Local Date : Wed May 29 11:54:46 EEST 2013
UTC Date : Wed May 29 08:54:46 EEST 2013
但是,如果我将UTC日期作为参数发送到DateTimeZone.convertLocalToUTC()方法,它也会将小时数减少3。 但是,由于它是UTC日期,我希望它不会再次转换日期。这是一个错误还是我错过了什么?
Date localDate = new Date();
System.out.println("Local Date : " + localDate);
DateTimeZone tz = DateTimeZone.getDefault();
Date utcDate = new Date(tz.convertLocalToUTC(localDate.getTime(), false));
System.out.println("UTC Date : " + utcDate);
Date utcDate2 = new Date(tz.convertLocalToUTC(utcDate.getTime(), false));
System.out.println("UTC Date 2 : " + utcDate2);
Output :
Local Date : Wed May 29 11:54:46 EEST 2013
UTC Date : Wed May 29 08:54:46 EEST 2013
UTC Date 2 : Wed May 29 05:54:46 EEST 2013
答案 0 :(得分:6)
根据convertLocalToUTC
将本地时刻转换为具有相同本地的标准UTC时刻 时间。执行计算后使用此转换 计算是使用一个简单的局部区域完成的。
方法没有假设或验证通过日期是否在UTC
,它始终将传递日期视为本地日期并转换为UTC
。你的程序输出是正确的。
答案 1 :(得分:2)
从convertLocalToUTC()
方法的角度来看它。它只需要long
和boolean
。它没有任何知识,你传递它的时间长度是UTC
。它假设您传递的是本地时间的long
并相应地进行调整。