java - 在 joda time 如何在不更改时间的情况下转换时区

标签 java datetime jodatime

我正在从数据库中获取 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/

相关文章:

java - play japid 为什么不能使用可变参数

datetime - 将每小时数据汇总为每日汇总

c++ - 使用Howard Hinnant的日期库将double转换为zoned_time

java - org.joda.time.Period 是否尊重闰年?

Grails 数据绑定(bind)日期格式

java - ScheduledExecutorService 中的多个 future 的异常处理

java - 如何从 Eclipse 将 Maven 项目的 WAR 部署到 JBoss 服务器?

java - "unchangable"固定大小的 JPanel 是否可能?

sql - 如何增加雪花中的最大迭代次数?

java - Joda LocalDate 的属性编辑器异常