如何解决您可以使用 tick/java.time 将较小粒度的时间类型转换为更精细的时间类型吗?
我想知道是否有一种方法可以使用 tick
(或基于滴答声的 java.time)从细粒度的时间类型转换为细粒度的时间类型?
这不起作用:
(-> (t/date "2015") (t/date))
;; => No implementation of method: :date of protocol: #'tick.core/IExtraction found
;; => for class: java.time.Year
对我来说,鉴于您基本上是在添加数据,因此可能无法朝这个方向进行转换是有道理的,因此您必须做出假设,例如选择月份和日期来移动以选择日期.鉴于此,您可以从更多的粒度“投射”到更少的粒度:
(-> (t/date "2015-01-01") (t/year))
;; => #time/year "2015"
我能想到的唯一方法是通过字符串进行转换:
(->> (t/year "2015")
(t/format (t/formatter "yyyy"))
(#(str % "-01-01"))
(t/date))
;; => #time/date "2015-01-01"
但这感觉有点老套。这样做的正确方法是什么?
解决方法
(require '[clojure.instant :as ci])
(ci/read-instant-timestamp "2015")
=> #inst"2015-01-01T00:00:00.000000000-00:00"
或
(t/zoned-date-time 2015)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。