2013-02-07 2 views
11

IWie man ein Clojure/Java Date einfacherer Form konvertieren

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

und schalten Sie ihn in einen String nehmen wollen, so ist es Eingang in einer Informix-Datumsfeld mm/tt/sein kann.

02/07/2013 

Ich habe verschiedene Beiträge angesehen, ohne Erfolg. Hier ist das erste, was ich gefunden habe, und ich habe versucht, zu wissen, dass ich die Reihenfolge des Datumsformats umkehren muss. Ich wollte es nur zur Arbeit bringen.

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

Ich erhalte diese Fehler

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

ich auch diese

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

ohne Erfolg versucht haben. Irgendwelche Dokumentationszeiger oder Antworten würden geschätzt werden.

Antwort

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

Sie direkt zum gewünschten Format

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

Aber wenn aus einem String formatiert werden kann,

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

Sie müssen diese Zeichenfolge das Format mit

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

zuerst analysieren und dann zurück t o das gewünschte Format

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

Vielleicht wollen Sie auch in einige Zeit und das Datum Bibliotheken suchen: What are the Clojure time and date libraries?.

+0

Bitte sagen Sie mir, dass Sie 'date' zwischen den Schritten 3 und 4 neu definiert haben, und Sie nicht 4 Minuten in der Konvertierung gewonnen haben :) – Alex

+0

@Alex Ah, ja, in meinen Edits durcheinander gebracht ... wird mit beheben Ein weiterer! –

0

.parse nimmt eine Zeichenfolge in dem im SimpleDateFormat-Konstruktor angegebenen Format und wandelt sie in ein Date-Objekt um. Wenn Sie das Datum einfach übergeben können, verwenden Sie .format und übergeben Sie ihm das zu formatierende Datum. Wenn Sie eine Zeichenfolge übergeben müssen, benötigen Sie 2 SimpleDateFormats. Eine für das Eingabeformat und eine für das Ausgabeformat. Rufen Sie .parse mit dem Eingabeformat und .format mit dem Ausgabeformat auf.

Verwandte Themen