我正在尝试解构一个instant,并得到年、月、日。
我尝试过java-time/as函数,但没有成功。
(ns myproject.time-test
(:require [java-time :as jt])
(:gen-class))
(def curr-time (jt/instant (System/currentTimeMillis)))
(jt/as curr-time :year)有谁能给我指个方向吗?
发布于 2018-07-20 02:44:03
我会在没有..的情况下这样做,以表明您正在使用Java interop (似乎clojure.java-time没有从Instant转换为ZonedDateTime的包装器:
(-> (jt/instant)
(.atZone (ZoneId/systemDefault)) ; => java ZonedDateTime obj
(.getYear))
=> 2018还有其他可能有用的方法:
(jt/zoned-date-time) => #object[java.time.ZonedDateTime 0x2585437a
"2018-07-19T11:42:37.093731-07:00[America/Los_Angeles]"]
(jt/year (jt/zoned-date-time)) => #object[java.time.Year 0x74694f06 "2018"]
(jt/year) => #object[java.time.Year 0x16c69c47 "2018"]而且还
(jt/as (jt/zoned-date-time) :year :month-of-year :day-of-month) => (2018 7 19)将Instant转换为ZonedDateTime的另一种方法
(let [zdt (ZonedDateTime/ofInstant (jt/instant) (ZoneId/systemDefault))]
(.getYear zdt) => 2018
(.getMonth zdt) => #object[java.time.Month 0x403d9a5b "JULY"]
(.getDayOfMonth zdt) => 19发布于 2018-07-20 01:09:54
(ns mastering.stackoverflow
(:import
(java.time ZoneId)))
(.. (jt/instant)
(atZone (ZoneId/systemDefault))
(getYear))也可以使用其他方法,如getMonthValue、getMinute。
你可以这样做“提取”:
(let [i (.. (jt/instant)
(atZone (ZoneId/systemDefault)))
extract (juxt (memfn getYear) (memfn getMinute))]
(extract i))
; => [2018 37]https://stackoverflow.com/questions/51427279
复制相似问题