som*_*new 3 java constructor jodatime
我正处于CEST时区(+2),我在理解JodaTime如何存储DateTime时遇到了一些困难.拿这个代码:
String timeString = "2012-09-10T13:30:00+01:00";
DateTime ddateTime = new DateTime(timeString);
DateTime dtLisbon = ddateTime.withZone(DateTimeZone.forID("Europe/Lisbon"));
Run Code Online (Sandbox Code Playgroud)
运行后,变量获得以下值:
timeString = '2012-09-10T13:30:00+01:00'
ddateTime = '2012-09-10T14:30:00.000+02:00'
dtLisbon = '2012-09-10T13:30:00.000+01:00'
Run Code Online (Sandbox Code Playgroud)
为什么JodaTime没有将ddateTime设置为我发送的确切字符串?我是否总是需要调用.withZone方法来获得正确的时刻?
谢谢
你应该调用DateTime一个DateTimeZone像这样的构造函数:
new DateTime(timeString, DateTimeZone.forID("Europe/Lisbon"));
Run Code Online (Sandbox Code Playgroud)
如果你逐步完成Joda正在制作的电话,我强烈推荐你,这样你就可以了解所有部分是如何组合在一起的,你会看到调用链是:
DateTime(Object)
-> BaseDateTime(Object, Chronology)
-> AbstractConverter.getChronology(Object, Chronology)
-> DateTimeUtils.getChronology(Chronology)
-> ISOChronology.getInstance()
-> DateTimeZone.getDefault()
-> System.getProperty("user.timezone")
Run Code Online (Sandbox Code Playgroud)
因此ddateTime,当您不提供DateTimeZoneUTC + 1(这是您提供的字符串中的时区)时,这就是为什么最终成为UTC + 2,这是您的时区.
| 归档时间: |
|
| 查看次数: |
1626 次 |
| 最近记录: |