tl; डॉ
अन्य उत्तर जावा 8 के रूप में दिए गए हैं।
Instant // Represent a moment in UTC.
.parse( "2013-09-29T18:46:19Z" ) // Parse text in standard ISO 8601 format where the `Z` means UTC, pronounces “Zulu”.
.atZone( // Adjust from UTC to a time zone.
ZoneId.of( "Asia/Kolkata" )
) // Returns a `ZonedDateTime` object.
आईएसओ 8601
आपका स्ट्रिंग प्रारूप ISO 8601 मानक का पालन करने के लिए होता है । यह मानक पाठ के रूप में विभिन्न तिथि-समय मूल्यों का प्रतिनिधित्व करने के लिए समझदार स्वरूपों को परिभाषित करता है।
java.time
जावा / और बाद में बनाए गए java.time ढांचे द्वारा पुराने java.util.Date
/ .Calendar
और java.text.SimpleDateFormat
वर्गों को दबा दिया गया है। ट्यूटोरियल देखें । पुरानी कक्षाओं से बचें क्योंकि वे खराब रूप से डिजाइन किए गए, भ्रमित करने वाले और परेशान करने वाले साबित हुए हैं।
पुरानी कक्षाओं में खराब डिज़ाइन के हिस्से ने आपको काट लिया है, जहां toString
विधि जेवीएम के वर्तमान डिफ़ॉल्ट समय क्षेत्र को लागू करती है जब वास्तव में UTC (GMT) में दिनांक-समय मान का पाठ प्रतिनिधित्व उत्पन्न करता है; सुविचारित लेकिन भ्रमित करने वाला।
Java.time कक्षाएं डिफ़ॉल्ट रूप से आईएसओ 8601 प्रारूपों का उपयोग करती हैं, जब दिनांक-समय मानों के शाब्दिक प्रतिनिधित्व को पार्स / उत्पन्न करते हैं। तो एक पार्सिंग पैटर्न निर्दिष्ट करने की आवश्यकता नहीं है।
एक Instant
में समय रेखा पर एक पल है यूटीसी ।
Instant instant = Instant.parse( "2013-09-29T18:46:19Z" );
आप एक समय क्षेत्र लागू कर सकते हैं के रूप में एक ZonedDateTime
वस्तु का उत्पादन करने की जरूरत है ।
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( zoneId );