我正在从数据库中获取 UTC 时间戳,我将其设置为 JodaTime DateTime
实例
DateTime dt = new DateTime(timestamp.getTime());
它完美地存储了 10:00 AM
的时间,但带有本地时区。例如,我在 IST 时区,距 UTC +5:30
我已经尝试了很多方法来更改时区,但每件事都会通过使用 +5:30 时差将时间从 10:00 AM
更改为其他时间
有什么方法可以在不影响当前时间的情况下更改 TimeZone
编辑: 如果我现在的时间是:
2013-09-25 11:27:34 AM UTC
以下是我使用这个new DateTime(timestamp.getTime());
2013-09-25 11:27:34 AM Asia/Kolkata
以下是我使用此 new DateTime(timestamp.getTime(), DateTimeZone.UTC)
;
2013-09-25 05:57:34 AM UTC
最佳答案
你可以使用类 LocalDateTime
LocalDateTime dt = new LocalDateTime(t.getTime());
并将 LocalDateTime
转换为 DateTime
DateTime dt = new LocalDateTime(timestamp.getTime()).toDateTime(DateTimeZone.UTC);
Joda DateTime
将任何以毫秒为单位的时间视为“当前时区自 1970 年以来的毫秒”。因此,当您创建 DateTime
实例时,它是使用当前时区创建的。
关于java - 在 joda time 如何在不更改时间的情况下转换时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19002978/