【发布时间】:2021-05-13 13:18:56
【问题描述】:
我正在尝试使用 java-time 将本地日期转换为带有毫秒的即时,但即时返回不带毫秒的时间戳。
(def UTC (java-time/zone-id "UTC")
(defn local-date-to-instant [local-date]
(-> local-date
(.atStartOfDay UTC)
java-time/instant))
(local-date-to-instant (java-time/local-date))
=> #object[java.time.Instant 0xdb3a8c7 "2021-05-13T00:00:00Z"]
但是
(java-time/instant)
=> #object[java.time.Instant 0x1d1c27c8 "2021-05-13T13:12:31.782Z"]
下游服务需要这种格式的字符串:yyyy-MM-ddTHH:mm:ss.SSSZ。
【问题讨论】:
-
您是否需要分数始终存在以供以后使用
.toString()?因为默认的printer/toString如果为零就不会输出(见github.com/openjdk/jdk/blob/…) -
没错,下游服务需要这样格式的字符串:yyyy-MM-ddTHH:mm:ss.SSSZ
-
那么您将不得不使用自己的格式化程序。请参阅stackoverflow.com/questions/38042134/…(已接受的答案或问题的第一条评论,仅用于格式化字符串 - 使用 java-time 更容易)
-
@Neikon 你确定这是一个要求吗?格式为ISO 8601,根据该标准,秒的小数部分在为零时是可选的。