且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将Joda-Time`DateTime`与时区转换为DateTime而没有时区?

更新时间:2023-02-18 22:52:56

@Nazgul说的是对的,但是如果你想要实现的是UTC区域的墙上时间,你可以这样做:

What @Nazgul said is right, but in case all you want to achieve is a "wall-time" in UTC zone you can do something like that:

DateTime dateTimePlus2 = DateTime.parse("2015-07-09T05:10:00+02:00");
System.out.println(dateTimePlus2);

DateTime dateTimeUTC = dateTimePlus2.withZone(DateTimeZone.UTC);
System.out.println(dateTimeUTC);

LocalDateTime localDateTimeUTC = dateTimeUTC.toLocalDateTime();
System.out.println(localDateTimeUTC);

结果:

2015-07-09T05:10:00.000+02:00
2015-07-09T03:10:00.000Z        ("Z" == Zulu tz == UTC)
2015-07-09T03:10:00.000

正如你所看到的,时间不是07:10正如你所料,因为UTC + 2区域是UTC的两小时前进。转换为UTC 减去 2小时。

As you can see, the time is not "07:10" as you expected, because UTC+2 zone is two hours ahead of UTC. Converting to UTC subtracts 2 hours.