我正在尝试解析一些给定的日期字符串:
val strDate = "2014-01-01T00:00:00.000999+00:00"
val dateFormatter = forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZ").withOffsetParsed()
val date = parse(strDate, dateFormatter)
但println(date)
输出2014-01-01T00:00:00.000Z
和
dateFormatter.print(date)
会返回2014-01-01T00:00:00.000000+00:00
。
我不明白为什么解析器只获得3位小数而不是指定的6位数。有人可以解释一下吗?
编辑:正如@Jesper指出的那样,精度限制为毫秒。
答案 0 :(得分:4)
打开org.joda.time.base.BaseDateTime
课程,您会看到时间编码为:
/** The millis from 1970-01-01T00:00:00Z */
private volatile long iMillis;
您可以通过Joda存储您想要的精度。
另一种方法是使用JSR-310。
threeten
添加依赖项,然后为较旧的Java版本添加backport。基类是Instant,具有纳秒精度,请参阅:https://github.com/ThreeTen/threetenbp/blob/master/src/main/java/org/threeten/bp/Instant.java