Abh*_*bhi 54 java datetime jodatime
我从数据库获取UTC时间戳,我正在设置为JodaTime DateTime实例
DateTime dt = new DateTime(timestamp.getTime());
Run Code Online (Sandbox Code Playgroud)
它存储时间完美,10:00 AM但与当地时区.例如,我在IST时区,距离UTC +5:30
我已经尝试了很多改变时区的东西,但是10:00 AM通过使用+5:30的不同,它可以将时间从其他东西改变为其他东西
有什么办法可以在不影响当前时间的情况下更改TimeZone
编辑:如果我现在的时间是:
2013-09-25 11:27:34 AM UTC
Run Code Online (Sandbox Code Playgroud)
以下是我使用它时的结果 new DateTime(timestamp.getTime());
2013-09-25 11:27:34 AM Asia/Kolkata
Run Code Online (Sandbox Code Playgroud)
以下是我使用时的结果new DateTime(timestamp.getTime(), DateTimeZone.UTC);
2013-09-25 05:57:34 AM UTC
Run Code Online (Sandbox Code Playgroud)
Ily*_*lya 47
您可以使用类LocalDateTime
LocalDateTime dt = new LocalDateTime(t.getTime());
Run Code Online (Sandbox Code Playgroud)
并转换LocalDateTime为DateTime
DateTime dt = new LocalDateTime(timestamp.getTime()).toDateTime(DateTimeZone.UTC);
Run Code Online (Sandbox Code Playgroud)
Joda DateTime在任何时候都会毫不犹豫地对待"自1970年以来在当前时区的毫升".因此,在创建DateTime实例时,会使用当前时区创建实例.
jgm*_*jgm 45
您可以使用更改时区的withZoneRetainFields()方法DateTime而不更改日期中的数字.
Stv*_*dll 12
如果您的时间戳是:2015-01-01T00:00:00.000-0500(这是当地时间[对我而言])
试试这个:
DateTime localDt = new DateTime(timestamp.getTime())
.withZoneRetainFields(DateTimeZone.UTC)
.withZone(DateTimeZone.getDefault());
Run Code Online (Sandbox Code Playgroud)
2014-12-31T19:00:00.000-05:00
分解:这为您提供了与您的时间戳对应的DateTime,指定它是UTC:
new DateTime(timestamp.getTime())
.withZoneRetainFields(DateTimeZone.UTC)
Run Code Online (Sandbox Code Playgroud)
2015-01-01T00:00:00.000Z
这为您提供了DateTime,但时间转换为您当地时间:
new DateTime(timestamp.getTime())
.withZoneRetainFields(DateTimeZone.UTC)
.withZone(DateTimeZone.getDefault());
Run Code Online (Sandbox Code Playgroud)
2014-12-31T19:00:00.000-05:00
| 归档时间: |
|
| 查看次数: |
61039 次 |
| 最近记录: |