2013-02-07 23 views
16

मैं निम्न स्वरूप कैसे प्राप्त कर सकते हैं: Joda समय में दिनांक समय वस्तु (जावा) में सेJodaTime दिनांक समय, ISO8601 जीएमटी दिनांक स्वरूप

2015-01-31T00:00:00Z 

(ISO8601 जीएमटी दिनांक स्वरूप)

? उदाहरण के लिए।

DateTime time = DateTime.now(); 
String str = // Get something like 2012-02-07T00:00:00Z 

धन्यवाद! :)

+3

में समाप्त होता है कैसे साफ यह नहीं है जाएगा निर्धारित करते हैं? उन्होंने वास्तव में परिभाषित किया कि वह क्या चाहता है। – vikingsteve

उत्तर

28

JODA Javadoc इंगित करता है कि DateTime के लिए toString ISO8601 में तारीख आउटपुट। यदि आपको सभी समय फ़ील्ड शून्य करने की आवश्यकता है, तो यह करें:

final DateTime today = new DateTime().withTime(0, 0, 0, 0); 
System.out.println(today); 

इसमें आउटपुट स्ट्रिंग में मिलीसेकंड शामिल होंगे। उनसे छुटकारा पाने के लिए आपको उस फॉर्मेटर का उपयोग करना होगा जो @jgm यहां सुझाता है।

आप इसे प्रारूप आप (शाब्दिक Z चरित्र के साथ) इस पोस्ट में के लिए पूछ रहे हैं मैच के लिए चाहते हैं, तो इस काम करेगा:

System.out.println(today.toString(DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'"))); 

आप मूल्य की जरूरत है यूटीसी हो सकता है, इस तरह यह प्रारंभ :

final DateTime today = new DateTime().withZone(DateTimeZone.UTC).withTime(0, 0, 0, 0); 
+0

संपादित करें: यह सही काम करता है। –

+1

'एसएसजेड' के बाद दूसरा एकल उद्धरण होना चाहिए "' – spuder

+0

क्या होता है यदि स्ट्रिंग में ऑफसेट है, तो मुझे ऑफसेट के बिना दिनांक समय प्राप्त करने के लिए स्ट्रिंग को पार्स करने की आवश्यकता है 'डेटटाइम आज = ​​नया डेटटाइम ("2016-07-11T05: 04: 30-05: 30"); System.out.println (आज .toString (DateTimeFormat.forPattern ("yyyy-MM-dd'T'HH: mm: ss"))) ; 'इस तरह का परिणाम देता है "2016-07-11T05: 34: 30" जहां mins फ़ील्ड को @petter kjelkenes – striker

2

एक DateTimeFormatter सेट करें:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ"); 
formatter.print(time); 
3

उपयोग ISODateTimeFormat

DateTime dt = new DateTime(); 
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis(); 
String str = fmt.print(dt); 
+0

ध्यान दें कि ISODateTimeFormat.dateTime() ज़ेड ज़ेड में ज़ेड नहीं है। इसमें कोई अंतर है (ZZ एक कोलन तैयार करता है)। – jgm

+0

हालांकि यह बिल्कुल स्पष्ट नहीं है कि वास्तव में पेटटर क्या पूछ रहा है, आपका उदाहरण उनके उदाहरण से अलग है: इसमें आउटपुट में मिलीसेकंड शामिल हैं और यूटीसी के बजाय डिफ़ॉल्ट समय क्षेत्र का उपयोग करता है। – jarnbjo

4

@jgm दस्तावेज़ में ISODateTimeFormat.dateTime() वर्णन किया गया है

एक फॉर्मेटर लौटाता है जो 'टी' (yyyy-MM-dd'T'HH: mm: ss.SSSZZ) से अलग पूर्ण दिनांक और समय को जोड़ता है।

लेकिन आप समय क्षेत्र, उदाहरण के लिए,

DateTimeFormatter fmt = ISODateTimeFormat.dateTime(); 
System.out.println(fmt.print(new DateTime().toDateTime(DateTimeZone.UTC))); 

यह जेड

+0

के बाद उत्तर में एक एकल उद्धरण गुम है या यह भी: 'fmt। प्रिंट (DateTime.now (DateTimeZone.UTC)) ' – vikingsteve

संबंधित मुद्दे