使用clj-time,我可以通过执行来解析日期和时间
(def timestamp (format/parse (formatters :date-time-no-ms)
"2013-06-03T23:00:00-0500"))
;=> #<DateTime 2013-06-04T04:00:00.000Z>
Run Code Online (Sandbox Code Playgroud)
我可以通过这样做将其转换回字符串
(unparse (formatters :year-month-day) timestamp)
;=> "2013-06-04"
Run Code Online (Sandbox Code Playgroud)
这是UTC时区内该时刻的年,月和日.如何获得DateTime相对于另一个时区的未解析版本?例如,对于上面的示例,我想指定UTC-5时区并获取字符串"2013-06-03".我曾与发挥各地from-time-zone和to-time-zone,但似乎无法找到的功能和参数的正确组合.
我试图使用clj-time计算两个DateTime实例之间的差异.我查看了文档并找到了clj-time.core/minus,clj-time.core/minus-但两者都需要一个实例,org.joda.time.ReadablePeriod而不是一个实例DateTime.我更喜欢使用cli-time,但如果不存在解决方案,使用Joda Time计算delta的最简洁方法是什么?
感谢您的帮助.
我查看了以下问题: 如何在clojure中添加当前日期的天数.
但是我对Clojure很新,我在以下场景中遇到困难我正在以字符串格式获取时间戳.所以我使用以下内容解析它:
(.parse (java.text.SimpleDateFormat. "yyyy-MM-dd") date)
Run Code Online (Sandbox Code Playgroud)
这给我一个看起来像这样的结果:
#inst "2015-02-13T00:20:00.000-00:00"
Run Code Online (Sandbox Code Playgroud)
如何在此添加90天,然后将其转换回字符串格式?我根据以上链接尝试了这个:
(java.util.Date. (+ (* 7 86400 1000)
(.parse (java.text.SimpleDateFormat. "yyyy-MM-dd") date)))
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
ClassCastException java.util.Date cannot be cast to java.lang.Number clojure.lang.Numbers.add
Run Code Online (Sandbox Code Playgroud) #inst "2017-01-01T12:00:00"使用clj-time库将 Clojure 时间瞬间解析为 Joda 时间的正确方法是什么?
我一直在玩to-local-date-time,org.joda.time.DateTimeZone/getDefault,格式化程序等等,我仍然无法弄清楚如何获得我作为UTC存储的日期时间显示在用户的时区.我可以使用一些格式化程序来显示时间,但它显示带有偏移量的UTC时间.如果我有2013-10-05T19:02:25.641-04:00,我怎么能让它显示"2013-10-05 14:02:25"?
我刚开始玩机智/小鸭子。它是用Clojure编写的,我以前没有Clojure的经验。我需要将2016-08-14T19:45:48.000 + 05:30这样的字符串解析为2016年8月14日(星期日)1945hrs之类的格式。我在Internet上搜索并遇到了lib clj-time。经过很长时间的努力后,我遇到了这个线程,并认为rfc822是我的杯茶。因此,我使用了格式化程序rfc822,但它给了我一个例外:
java.lang.IllegalArgumentException: Invalid format: "2016-08-16T00:00:00.000+05:30"
这是我的代码:
(ns firstproj.core
(:gen-class)
(:require [duckling.core :as p])
(:require [clj-time.format :as f]))
(defn -main
"I don't do a whole lot."
[x]
(p/load! { :languages ["en"]})
(def var_ (p/parse :en$core x [:time]))
(def date_string "2016-08-14T19:45:48.000+05:30")
(f/parse (f/formatters :rfc822) date_string))
Run Code Online (Sandbox Code Playgroud)
所以有人可以告诉我我在做什么错。或Clojure中的任何其他方式来获取我想要的日期时间格式。由于我对Clojure完全幼稚,因此请您详细回答,这将有助于我更好地理解这一点。谢谢。