2017-02-15 56 views
0

我正在使用乔达时间。我想比较2日期/时间A和B以确定B是否超过A.Android Joda时间 - 如何从文件加载UTC

问题 - 当我登录A时,它不是UTC。当我logcat B它在UTC。因此比较不是真实的。

A - A UTC time loaded from a file 
B -The "System Time" in UTC 

代码:

A - DateTime csvTime = new DateTime(inArray[5]) ; //inArray[x] is loaded from a file and has this format: 2017-02-10T01:09:00Z 
B - new DateTime(DateTimeZone.UTC) 

问题 - 如何加载inArray [5]因此它是真正的UTC与b的准确性进行比较?

在此先感谢,是的,我已经看过100多篇关于此的帖子。我还没有找到一篇文章告诉我上面的A语法,如何在UTC内部存储外部ISO 8601格式的日期。我玩过TimeZone默认设置为强制Joda/JVMP默认TZ,但是这使我不得不指定我不想做的TimeZone。

回答

1

如果输入已经在UTC(尾随“Z”),那么我建议你这样分析它:

DateTime dt = 
    ISODateTimeFormat.dateTimeNoMillis().withOffsetParsed().parseDateTime(
     "2017-02-10T01:09:00Z" 
    ); 
System.out.println(dt); // 2017-02-10T01:09:00.000Z 

否则,您可以通过withZone(DateTimeZone.UTC)变换分析您的A-日期时间为UTC。

+0

谢谢。 (dt)工作得很好。我很感激。最后一个问题......现在如何在我的android设置的本地时间/时区显示dt? –

+1

@FrankZappa如何使用'withZone(DateTimeZone.getDefault())'?只要用户没有调整他/她的设备上的时钟或系统区域,这就会工作。 –

+0

谢谢。我会尝试。您是否有经验序列化/反序列化包含Joda的DateTime字段的对象?我正在使用gson进行序列化。我的序列化工作正在进行,直到我将java日期更改为Joda的DateTime,然后反序列化崩溃。所以我然后添加谷歌的DateTimeTypeConverter序列化/反序列化。它不再在序列化上崩溃,而是在反序列化时似乎时间已经改变。有什么想法吗? –