我从服务器收到了非常奇怪的日期格式。它看起来像 2017-03-07T15:08:01.513544Z ,奇怪的部分是“Z”之前的六个最后一个字符,因为我在服务器的大多数响应中只看到了三个毫秒符号。我试图使用掩码 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'用SimpleDateFormat
解析它,它适用于所有Android版本,除了 api 16(4.1)。在 developer.android.com 中,我看到了像.SSSXXX这样的掩码示例,但结果我有错误,因为系统不知道符号'X'。 那么,你有没有遇到类似的日期格式?
答案 0 :(得分:1)
答案很简单,但需要的不仅仅是答案。
Instant instantFromServer = Instant.parse("2017-03-07T15:08:01.513544Z");
要在Android上使用此功能,您需要获取ThreeTenABP库。它包含JSR-310中描述的日期和时间类,其中Instant
是一个。请参阅以下链接。
那么,你有没有遇到类似的日期格式?
01.513544
表示1.513544秒,或1秒513毫秒544微秒,或1秒513544000纳秒。有很多方法可以实现。我曾与IBM大型机一起工作,这些大型机经常给我们带有微秒精度的时间戳,即秒数上的6位小数。我想随着计算机越来越快,准确性要求越来越严格,所以我们将来可能会看到更多这些。虽然我认为SimpleDateFormat
无法处理这些,但JSR-310中的类通常具有纳秒精度,并且解析具有可变小数位数的字符串。