【发布时间】:2015-11-28 22:42:51
【问题描述】:
有人可以向我解释一下 joda DateTime 时区是如何工作的吗?我有:
public static void main(String[] args) {
DateTime utc = new DateTime(new Date()).withZone(DateTimeZone.UTC);
DateTime nonUtc = new DateTime(new Date());
long l = DateTimeZone.UTC.convertLocalToUTC(new Date().getTime(), false);
DateTime converted = new DateTime(l);
System.out.println("UTC :"+utc.toDate() + " , time zone :"+utc.getZone().getID());
System.out.println("Non UTC :"+nonUtc.toDate()+ " , time zone :"+nonUtc.getZone().getID());
System.out.println("Converted :"+converted.toDate()+ " , time zone :"+converted.getZone().getID());
}
这个的输出如下。本地默认时区是欧洲/雅典
UTC :Thu Sep 03 10:40:30 EEST 2015 , time zone :UTC
Non UTC :Thu Sep 03 10:40:30 EEST 2015 , time zone :Europe/Athens
Converted :Thu Sep 03 10:40:30 EEST 2015 , time zone :Europe/Athens
我可以理解,第一个在 UTC 中创建一个 new Date(),时间从我的默认 TZ 开始,第二个创建一个 new Date(),默认 TZ,但为什么最后一行不将本地时间转换为 UTC?
【问题讨论】: