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 - JPA EclipseLink 2 查询性能

mysql - 如何按 MySQL 中 DateTime 字段的小时部分过滤查询?

java - Struts 2 - 设置 bean Action

java - java中如何使 session 过期?

datetime - 我如何在日期中这样格式化日期2019-07-08T10:37:28Z

java - 乔达 : how to get months and days between two dates

java - 在 JodaTime 中生成日期范围

java - 无法使用 DefaultFormattingConversionService 将字符串转换为 Joda LocalTime

Java XML 转换器 : Empty elements in long notation instead of short

c# - 我们可以将 UTC 时间转换为 24 小时格式吗?如果是,那么如何?