我遇到了Jodatime和Android的奇怪行为。我想解析字符串:如何从JodaTime时区获得小时
2014-05-19T18:13:00.000+02:00
to DateTime,并获得年,月,小时为int。我开始上的IntelliJ Studio的一些测试,我做了这样的事情:
String date = "2014-05-19T18:13:00.000+02:00";
DateTime dateTime = new DateTime(date);
System.out.println(dateTime.toString());
System.out.println(dateTime.getYear());
System.out.println(dateTime.getMonthOfYear());
System.out.println(dateTime.getDayOfMonth());
System.out.println(dateTime.getHourOfDay());
System.out.println(dateTime.getMinuteOfHour());
System.out.println(dateTime.getMillis());
这给了我正确的答案:
2014-05-19T18:13:00.000+02:00
2014
5
19
18
13
1400515980000
现在,当我改变了IDE到Android Studio和做同样的:
String dateT = "2014-05-19T18:13:00.000+02:00";
DateTime dateTime = new DateTime(dateT);
Lo.g(dateTime.getHourOfDay() + "");
Lo.g(dateTime.toString());
我的结果是:
16
2014-05-19T16:13:00.000Z
由于某些原因,Android Studio/Android上的DateTime未考虑时区为+2:00。
我找不到解决方案。在Joda中也没有简单的方法“addTimeZone”。
如何使用DataTime显示正确的时间?我尝试了LocalDateTime,用DateTimeZone.getDefault()构造DateTime(它给了我UTF ...)
好吧,我用DateTimeFormatter得到了正确的值,但我仍然不知道这个区别是什么。 – Bresiu
您是否已验证两个平台上的Joda时间版本相同? –
是的,我已经在两个平台上使用最新版本。 – Bresiu