如何在clojure中将即时时间转换为日期

How to convert instant time to date in clojure

我在 clojure 中的即时时间为“2016-08-03T18:45:00.000-00:00”。我想将其转换为唯一日期(“2016-08-03”)。我该怎么做。

我的实际日期格式为“2016-08-03T18:45:00Z”。我将它转换为即时使用 (c/to-date (f/parse "2016-08-03T18:45:00Z")).How to get only date?

谢谢

如果您只想获取日期和时间字符串的日期部分:

(require '[clojure.string :as str])

(def date-str "2016-08-03T18:45:00.000-00:00")
(first (str/split date-str #"T"))
;; => "2016-08-03"

clj-time 现已弃用,新项目应使用 java-time:

(:require [java-time :as jt]))

(defn format-date
  "Format a Java instant"
   [date]
  (let [formatter         (jt/format "dd-MM-yyyy HH:mm")
        instant-with-zone (.atZone date (jt/zone-id))]
    (jt/format formatter instant-with-zone)))

请注意,(jt/zone-id) returns 当前服务器区域,因此如果您想要静态区域日期,则必须使用 (jt/zone-id "America/Mexico_City")。