15

私は取りたい

(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)

成功しませんでした。ドキュメントのポインタまたは回答をいただければ幸いです。

4

2 に答える 2

24
(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の時間と日付のライブラリとは何ですか?

于 2013-02-07T17:57:43.383 に答える
0

.parseは、SimpleDateFormatコンストラクターで指定された形式の文字列を受け取り、それをDateオブジェクトに変換します。日付だけを渡すことができる場合は、.formatを使用して、フォーマットする日付を渡します。文字列を渡す必要がある場合は、2つのSimpleDateFormatsが必要です。1つは入力形式用で、もう1つは出力形式用です。入力形式を使用して.parseを呼び出し、出力形式を使用して.formatを呼び出します。

于 2013-02-07T18:16:49.700 に答える