Java Android解析日期问题

Java Android解析日期问题,java,android,simpledateformat,Java,Android,Simpledateformat,我从服务器收到了非常奇怪的日期格式。它看起来2017-03-07T15:08:01.513544Z,奇怪的部分是“Z”之前的最后六个字符,因为我在服务器的大多数响应中只看到了三个毫秒符号。我正试图用带有掩码的SimpleDateFormat解析它,该掩码yyyy-MM-dd'HH:MM:ss.SSS'Z',它可以在除API16(4.1)之外的所有android版本上运行。在developer.android.com中,我看到了类似于.SSSXXX的掩码示例,但结果我出现了错误,因为系统不知道符号

我从服务器收到了非常奇怪的日期格式。它看起来2017-03-07T15:08:01.513544Z,奇怪的部分是“Z”之前的最后六个字符,因为我在服务器的大多数响应中只看到了三个毫秒符号。我正试图用带有掩码的
SimpleDateFormat
解析它,该掩码yyyy-MM-dd'HH:MM:ss.SSS'Z',它可以在除API16(4.1)之外的所有android版本上运行。在developer.android.com中,我看到了类似于.SSSXXX的掩码示例,但结果我出现了错误,因为系统不知道符号“X”那么,你有没有遇到过类似的日期格式?

答案很简单,但不仅仅是答案

    Instant instantFromServer = Instant.parse("2017-03-07T15:08:01.513544Z");
要在Android上使用此功能,您需要获得ThreeTenABP库。它包含JSR-310中描述的日期和时间类,
Instant
就是其中之一。请参阅下面的链接

那么,你有没有遇到过类似的日期格式?

01.513544
表示1.513544秒,或1秒513毫秒544微秒,或1秒51354000纳秒。有很多方法可以表达它。我曾经使用过IBM大型机,它通常会给我们提供微秒精度的时间戳,也就是说,每秒6位小数。我想,随着计算机的速度越来越快,精度要求也越来越严格,因此我们将来可能会看到更多这样的情况。虽然我相信
SimpleDateFormat
无法处理这些问题,但JSR-310中的类通常具有纳秒精度,并且可以直接解析具有可变小数数的字符串

链接

你能回答你的问题吗?您可以改进格式并将问题调整为,这种类型的日期格式将出现在类似日历的Outlook邀请“yyyyMMdd'T'HHmm'00'”中。我这样用过,基本正确,@tommus。Java 8具有纳秒精度,因此不会丢失一微秒。我使用的IBM大型机与您的一样,曾经给我们提供秒数为6位小数的时间戳。您提到的格式符合ISO 8601,因此应该有很多用于解析它的选项。