在joda时间如何在不改变时间的情况下转换时区

2022-08-31 17:12:27

我正在从数据库获取UTC时间戳,这是我正在设置为JodaTime实例DateTime

DateTime dt = new DateTime(timestamp.getTime());

它存储的时间完美地说,但与当地时区。例如,我所在的 IST 时区距离 UTC 为 +5:3010:00 AM

我已经尝试了很多东西来改变时区,但是对于每一件事,它都会通过使用+5:30差异将时间从更改为其他内容10:00 AM

有没有办法在不影响当前时间的情况下更改时区

编辑:如果我的当前时间是:

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

答案 1

您可以使用类 LocalDateTime

LocalDateTime dt = new LocalDateTime(t.getTime()); 

并转换为LocalDateTimeDateTime

DateTime dt = new LocalDateTime(timestamp.getTime()).toDateTime(DateTimeZone.UTC);  

Joda将米利斯的任何时候都视为“自1970年代以来在当前时区的米利斯”。因此,当您创建实例时,它是使用当前时区创建的。DateTimeDateTime


答案 2

您可以使用 的方法更改时区,而无需更改日期中的数字。withZoneRetainFields()DateTime