问题 如何将Clojure / Java日期转换为更简单的表单


我要拿

(str (Date.))
"Thu Feb 07 12:15:03 EST 2013"

并将其转换为字符串,因此可以输入到Informix日期字段mm / dd / yyyy。

02/07/2013

我一直在看各种帖子,没有成功。这是我找到的第一件事,并尝试过,知道我必须颠倒日期格式的顺序。我只是想让它发挥作用。

(defn str-to-date [date] (. (SimpleDateFormat. "yyyy-MM-dd") parse date))

我收到这个错误

(str-to-date (str (Date.)))
ParseException Unparseable date: 
"Thu Feb 07 12:44:41 EST 2013"  java.text.DateFormat.parse (DateFormat.java:354)

我也尝试过这个

 (.parse (SimpleDateFormat. "mm/DD/yyyy") (str (Date.)))
ParseException Unparseable date: 
"Thu Feb 07 12:42:02 EST 2013"  java.text.DateFormat.parse (DateFormat.java:354)

没有成功。任何文档指针或答案将不胜感激。


10589
2018-02-07 17:45


起源



答案:


(def date (java.util.Date.))
date 
=> #inst "2013-02-07T19:08:12.107-00:00"

您可以直接格式化为所需的格式

(.format (java.text.SimpleDateFormat. "MM/dd/yyyy") date)
=> "02/07/2013"

但如果从字符串开始,

(str date)
=> "Thu Feb 07 13:08:12 CST 2013"

您必须首先使用该字符串的格式进行解析

(def df (java.text.SimpleDateFormat. "EEE MMM d HH:mm:ss zzz yyyy"))
(.parse df (str date))
=> #inst "2013-02-07T19:08:12.107-00:00"

然后回到所需的格式

(.format (java.text.SimpleDateFormat. "MM/dd/yyyy") (.parse df (str date)))
=> "02/07/2013"

您可能还想查看一些时间和日期库: 什么是Clojure时间和日期库?


16
2018-02-07 17:57



请告诉我你重新定义了 date 在步骤3和4之间,你在转换中没有获得4分钟:) - Alex
@Alex啊,是的,我的编辑混乱了...将与另一个修复! - A. Webb


答案:


(def date (java.util.Date.))
date 
=> #inst "2013-02-07T19:08:12.107-00:00"

您可以直接格式化为所需的格式

(.format (java.text.SimpleDateFormat. "MM/dd/yyyy") date)
=> "02/07/2013"

但如果从字符串开始,

(str date)
=> "Thu Feb 07 13:08:12 CST 2013"

您必须首先使用该字符串的格式进行解析

(def df (java.text.SimpleDateFormat. "EEE MMM d HH:mm:ss zzz yyyy"))
(.parse df (str date))
=> #inst "2013-02-07T19:08:12.107-00:00"

然后回到所需的格式

(.format (java.text.SimpleDateFormat. "MM/dd/yyyy") (.parse df (str date)))
=> "02/07/2013"

您可能还想查看一些时间和日期库: 什么是Clojure时间和日期库?


16
2018-02-07 17:57



请告诉我你重新定义了 date 在步骤3和4之间,你在转换中没有获得4分钟:) - Alex
@Alex啊,是的,我的编辑混乱了...将与另一个修复! - A. Webb


.parse采用SimpleDateFormat构造函数中指定的格式的字符串,并将其转换为Date对象。如果你可以传递日期,那么使用.format传递它要格式化的日期。如果你需要传入一个字符串,那么你需要2个SimpleDateFormats。一个用于输入格式,一个用于输出格式。使用输入格式调用.parse,使用输出格式调用.format。


0
2018-02-07 18:16