将字符串转换为clojure中的日期 [英] converting strings into dates in clojure

查看:99
本文介绍了将字符串转换为clojure中的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下格式的字符串2013-02-20T17:24:33ZMon Feb 25 02:42:27 +0000 2013

I have strings in the following format "2013-02-20T17:24:33Z" and "Mon Feb 25 02:42:27 +0000 2013".

是否有一种快速方法将这些转换为日期时间格式,以便可以测试它们是否相等和/排序。

Is there a quick way to convert these into date time format so that they can be tested for equality and/or sorted.

clj-time允许我使用此格式(date-time 1986 10 14 4 3 27 456)。但是要实现这个我将不得不解析两个上面的字符串。上述字符串是标准格式,有没有办法直接将它们转换为日期时间对象?

clj-time does allow me to this format (date-time 1986 10 14 4 3 27 456). However to achieve this I will have to parse the two above strings. The above strings being standard formats, is there a way to directly convert them into date time objects?

谢谢,
Murtaza

Thanks, Murtaza

推荐答案

clj-time已定义标准格式化程序,请参阅 clj-time.format / show-formatters 你的第二种格式不是一个'标准'格式,尽管clj时间(虽然它看起来可疑接近rfc822)。

clj-time has standard formatters defined, see clj-time.format/show-formatters, but your second format is not a 'standard' format as far as clj-time is concerned (although it does look suspiciously close to rfc822). You can create a custom formatter tho...

(use 'clj-time.format)

(parse (formatters :date-time-no-ms) "2013-02-20T17:24:33Z")
#<DateTime 2013-02-20T17:24:33.000Z>

(parse (formatter "E MMM dd hh:mm:ss Z YYYY") "Mon Feb 25 02:42:27 +0000 2013" )
#<DateTime 2013-02-25T02:42:27.000Z>

(show-formatters)
:basic-date                             20130228
:basic-date-time                        20130228T114047.213Z
:basic-date-time-no-ms                  20130228T114047Z
:basic-ordinal-date                     2013059
:basic-ordinal-date-time                2013059T114047.213Z
:basic-ordinal-date-time-no-ms          2013059T114047Z
:basic-t-time                           T114047.213Z
:basic-t-time-no-ms                     T114047Z
:basic-time                             114047.213Z
:basic-time-no-ms                       114047Z
:basic-week-date                        2013W094
:basic-week-date-time                   2013W094T114047.213Z
:basic-week-date-time-no-ms             2013W094T114047Z
:date                                   2013-02-28
:date-hour                              2013-02-28T11
:date-hour-minute                       2013-02-28T11:40
:date-hour-minute-second                2013-02-28T11:40:47
:date-hour-minute-second-fraction       2013-02-28T11:40:47.213
:date-hour-minute-second-ms             2013-02-28T11:40:47.213
:date-time                              2013-02-28T11:40:47.213Z
:date-time-no-ms                        2013-02-28T11:40:47Z
:hour                                   11
:hour-minute                            11:40
:hour-minute-second                     11:40:47
:hour-minute-second-fraction            11:40:47.213
:hour-minute-second-ms                  11:40:47.213
:ordinal-date                           2013-059
:ordinal-date-time                      2013-059T11:40:47.213Z
:ordinal-date-time-no-ms                2013-059T11:40:47Z
:rfc822                                 Thu, 28 Feb 2013 11:40:47 +0000
:t-time                                 T11:40:47.213Z
:t-time-no-ms                           T11:40:47Z
:time                                   11:40:47.213Z
:time-no-ms                             11:40:47Z
:week-date                              2013-W09-4
:week-date-time                         2013-W09-4T11:40:47.213Z
:week-date-time-no-ms                   2013-W09-4T11:40:47Z
:weekyear                               2013
:weekyear-week                          2013-W09
:weekyear-week-day                      2013-W09-4
:year                                   2013
:year-month                             2013-02
:year-month-day                         2013-02-28

这篇关于将字符串转换为clojure中的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆