标签: clj-time

如何在特定时区"解析"日期?

使用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-zoneto-time-zone,但似乎无法找到的功能和参数的正确组合.

clojure clj-time

7
推荐指数
1
解决办法
1928
查看次数

使用clj-time获取DateTime实例之间的差异

我试图使用clj-time计算两个DateTime实例之间的差异.我查看了文档并找到了clj-time.core/minus,clj-time.core/minus-但两者都需要一个实例,org.joda.time.ReadablePeriod而不是一个实例DateTime.我更喜欢使用cli-time,但如果不存在解决方案,使用Joda Time计算delta的最简洁方法是什么?

感谢您的帮助.

clojure jodatime clj-time

7
推荐指数
1
解决办法
4059
查看次数

如何在Clojure中添加日期到日期

我查看了以下问题: 如何在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)

java clojure clj-time

5
推荐指数
1
解决办法
2426
查看次数

使用 clj-time 将 Clojure #inst 即时转换为 Joda 时间

#inst "2017-01-01T12:00:00"使用clj-time库将 Clojure 时间瞬间解析为 Joda 时间的正确方法是什么?

parsing clojure jodatime clj-time

4
推荐指数
1
解决办法
1369
查看次数

clj-time并在用户的时区显示

我一直在玩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"?

timezone datetime clojure clj-time

2
推荐指数
2
解决办法
3020
查看次数

解析字符串以在Clojure中以特定格式获取日期和时间

我刚开始玩机智/小鸭子。它是用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完全幼稚,因此请您详细回答,这将有助于我更好地理解这一点。谢谢。

clojure clj-time

1
推荐指数
1
解决办法
1032
查看次数

标签 统计

clj-time ×6

clojure ×6

jodatime ×2

datetime ×1

java ×1

parsing ×1

timezone ×1