2013-02-07 20 views
11

में कनवर्ट करने के लिए एक Clojure/जावा दिनांक मैंकैसे सरल फार्म

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

लेने के लिए और यह एक स्ट्रिंग में बदल जाते हैं, तो यह एक इन्फोर्मिक्स दिनांक फ़ील्ड dd/mm/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) 
कोई सफलता के साथ

की कोशिश की है मिलता है। किसी भी दस्तावेज पॉइंटर्स या उत्तरों की सराहना की जाएगी।

उत्तर

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

तुम भी कुछ समय और तारीख पुस्तकालयों में देखना चाहते हो सकता है: What are the Clojure time and date libraries?

+0

कृपया मुझे बताएं कि आपने चरण 3 और 4 के बीच 'दिनांक' को फिर से परिभाषित किया है, और आपको रूपांतरण में 4 मिनट नहीं मिले हैं :) – Alex

+0

@Alex Ah, हाँ, मेरे संपादन में झुका हुआ है ... एक और! –

0

.parse SimpleDateFormat कन्स्ट्रक्टर में निर्दिष्ट प्रारूप में एक स्ट्रिंग लेता है और इसे डेट ऑब्जेक्ट में बदल देता है। यदि आप अभी तिथि में पास कर सकते हैं, तो फॉर्मेट को प्रारूपित करने की तारीख को पास कर दें। यदि आपको स्ट्रिंग में पास करने की आवश्यकता है, तो आपको 2 SimpleDateFormats की आवश्यकता होगी। इनपुट प्रारूप के लिए एक और आउटपुट प्रारूप के लिए एक। आउटपुट प्रारूप का उपयोग कर इनपुट प्रारूप और .format का उपयोग कर .parse।