आपका प्रारूप, YYYY-mm-dd'T'HH:MM:ss'Z'
सही नहीं। आइए उन सभी बातों पर चर्चा करें जो इस प्रारूप में गलत हैं।
- आपने
Y
का प्रयोग किया हैy
. के बजाय : प्रतीकY
सप्ताह वर्ष
. के लिए उपयोग किया जाता है जबकिy
वर्ष
. के लिए प्रयोग किया जाता है . साल-दर-साल के बीच अंतर की जांच करें युग और सप्ताह-आधारित-वर्ष? इसके बारे में और जानने के लिए। - आपने
मिमी
का उपयोग किया है महीने के लिए: महीने के लिए सही प्रतीकM
. है । - आपने
MM
का उपयोग किया है मिनटों के लिए: मिनट के लिए सही प्रतीकm
. है । - आपने
Z
संलग्न किया है सिंगल कोट्स के भीतर: प्रतीक,Z
समय क्षेत्र
. के लिए प्रयोग किया जाता है जबकि'Z'
चरित्र शाब्दिक के अलावा और कुछ नहीं है। संभवतः आप+00:00
. के टाइमज़ोन ऑफ़सेट को प्रारूपित करना चाहते हैंZ
. के रूप में और इसके लिए आपको वास्तव मेंX
. का उपयोग करना चाहिए ।
तो, सही प्रारूप इस प्रकार है:
yyyy-MM-dd'T'HH:mm:ssX
सुझाए गए प्रारूप के साथ एक डेमो:
import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;public class Main{ public static void main(String[] args) { SimpleDateFormat sdf =नया SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ssX", लोकेल.इंग्लिश); कैलेंडर कैलेंडर =Calendar.getInstance (); दिनांक दिनांक =कैलेंडर.गेटटाइम (); System.out.println(sdf.format(date)); }}
आउटपुट:
2021-01-14T08:13:01Z
ध्यान दें कि java.util
. का दिनांक-समय API और उनके स्वरूपण API, SimpleDateFormat
पुराने हैं और त्रुटि-प्रवण हैं। उनका पूरी तरह से उपयोग बंद करने और आधुनिक दिनांक-समय API
।
- किसी भी कारण से, यदि आपको Java 6 या Java 7 से चिपके रहना है, तो आप तीन-दस बैकपोर्ट जो अधिकांश java.time . को बैकपोर्ट करता है जावा 6 और 7. के लिए कार्यक्षमता।
- यदि आप किसी Android प्रोजेक्ट के लिए काम कर रहे हैं और आपका Android API स्तर अभी भी Java-8 के अनुरूप नहीं है, तो जावा 8+ एपीआई डिसुगरिंग के माध्यम से उपलब्ध हैं और एंड्रॉइड प्रोजेक्ट में थ्रीटेनएबीपी का उपयोग कैसे करें ।
Date#toInstant का इस्तेमाल करें
एक java.util.Date
. कन्वर्ट करने के लिए ऑब्जेक्ट (विरासत प्रकार) से java.time.Instant
(आधुनिक प्रकार)। तत्काल
समय-रेखा पर एक तात्कालिक बिंदु का प्रतिनिधित्व करता है और आपके अधिकांश JSON संचालन के लिए पर्याप्त होना चाहिए। Instant#toString
UTC टाइमज़ोन ऑफ़सेट के साथ दिनांक-समय स्ट्रिंग लौटाता है जो ISO-8601 मानकों
के अनुरूप है। ।
डेमो:
आयात करें आयात java.util.Locale; सार्वजनिक वर्ग मुख्य {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क) {कैलेंडर कैलेंडर =कैलेंडर। getInstance (); दिनांक दिनांक =कैलेंडर.गेटटाइम (); तत्काल तत्काल =date.toInstant (); // तत्काल # toString System.out.println (तत्काल) का मान प्रिंट करें; OffsetDateTime odt =Instant.atOffset(ZoneOffset.UTC); System.out.println (odt); // कस्टम प्रारूप DateTimeFormatter dtf =DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssX", Locale.ENGLISH); System.out.println (dtf.format (odt)); }}आउटपुट:
2021-01-14T08:28:35.659Z2021-01-14T08:28:35.659Z2021-01-14T08:28:35Z