tl; डॉ
ZonedDateTime.parse(
"Friday, September 26, 2008 8:30 PM Eastern Daylight Time" ,
DateTimeFormatter.ofPattern("EEEE, MMMM d, uuuu h:m a zzzz")
).getZone()
java.time
आधुनिक तरीका java.time वर्गों के साथ है। प्रश्न और अन्य उत्तर परेशानी पुरानी विरासत डेट-टाइम कक्षाओं या जोडा-टाइम प्रोजेक्ट का उपयोग करते हैं, जिनमें से दोनों अब जावा.टाइम कक्षाओं द्वारा सप्लाई किए जाते हैं।
अपने डेटा से मेल खाने के लिए एक स्वरूपण पैटर्न के साथ DateTimeFormatter
ऑब्जेक्ट को परिभाषित करें।
DateTimeFormatter f = DateTimeFormatter.ofPattern("EEEE, MMMM d, uuuu h:m a zzzz");
नाम के- दिन और महीने के नाम के मानव भाषा, साथ ही अन्य स्वरूपण मुद्दों के लिए सांस्कृतिक मानकों निर्दिष्ट करने के लिए एक Locale
असाइन करें।
f = f.withLocale(Locale.US);
आखिरकार, ZonedDateTime
ऑब्जेक्ट प्राप्त करने के लिए पार्सिंग करें।
String input = "Friday, September 26, 2008 8:30 PM Eastern Daylight Time" ;
ZonedDateTime zdt = ZonedDateTime.parse(input , f);
zdt.toString(): 2008-09-26T20: 30-04: 00 [America/New_York]
आप ZonedDateTime
, के रूप में प्रतिनिधित्व से समय क्षेत्र के लिए पूछ सकते हैं ZoneId
ऑब्जेक्ट। यदि आप समय क्षेत्र के बारे में अधिक जानकारी चाहते हैं तो आप ZoneId
से पूछताछ कर सकते हैं।
ZoneId z = zdt.getZone();
See for yourself in IdeOne.com।
आईएसओ 8601
बचें भयानक प्रारूप इस तरह का में तारीख समय डेटा का आदान प्रदान। अंग्रेजी न मानें, अपने आउटपुट को दिन-सारिणी जैसी चीज़ों के साथ एक्सेस न करें, और Eastern Daylight Time
जैसे छद्म-समय-क्षेत्रों का उपयोग न करें।
समय क्षेत्रों के लिए: continent/region
के प्रारूप में एक proper time zone name निर्दिष्ट करें, America/Montreal
जैसे, Africa/Casablanca
, या Pacific/Auckland
। कभी भी 0-या IST
जैसे 3-4 अक्षर संक्षेप का उपयोग न करें क्योंकि वे सही समय क्षेत्र नहीं हैं, मानकीकृत नहीं हैं, और यहां तक कि अद्वितीय (!) भी नहीं हैं।
टेक्स्ट के लिए दिनांक-समय मानों को क्रमबद्ध करने के लिए, केवल ISO 8601 स्वरूपों का उपयोग करें। Java.time कक्षाएं डिफ़ॉल्ट रूप से इन स्वरूपों का उपयोग करती हैं जब स्ट्रिंग को उनके मूल्य का प्रतिनिधित्व करने के लिए पार्सिंग/जनरेट करते हैं।
java.time
बारे java.time ढांचे जावा 8 और बाद में बनाया गया है। ये कक्षाएं परेशान पुराने legacyjava.util.Date
, Calendar
, & SimpleDateFormat
जैसी समय-समय पर कक्षाएं प्रदान करती हैं।
Joda-Time प्रोजेक्ट, अब maintenance mode में, जावा.टाइम पर माइग्रेशन की सलाह देता है।
और जानने के लिए, Oracle Tutorial देखें। और कई उदाहरणों और स्पष्टीकरणों के लिए स्टैक ओवरफ़्लो खोजें। विशिष्टता JSR 310 है।
जावा.टाइम कक्षाएं कहां प्राप्त करें?
- Java SE 8 और SE 9 और बाद में
- में निर्मित।
- एक बंडल कार्यान्वयन के साथ मानक जावा एपीआई का हिस्सा।
- जावा 9 कुछ मामूली विशेषताओं और सुधारों को जोड़ता है।
- Java SE 6 और SE 7
- java.time कार्यक्षमता की ज्यादातर ThreeTen-Backport में जावा 6 & से 7 वापस भेजा गया है।
- Android
- ThreeTenABP परियोजना adapts ThreeTen-backport विशेष रूप से (जैसा कि ऊपर उल्लेख) Android के लिए।
- How to use… देखें।
ThreeTen-Extra परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के जोड़ों के लिए एक सिद्ध भूमि है। आपको यहां कुछ उपयोगी कक्षाएं मिल सकती हैं जैसे Interval
, YearWeek
, YearQuarter
, और more।
क्या आपको इस मुद्दे के समाधान का समाधान मिला? – Chin2
पिछले पैराग्राफ के संबंध में, 'तिथि' और 'कैलेंडर' कक्षाएं एक खूनी गड़बड़ी हैं: खराब-डिजाइन, भ्रमित और परेशानी। उनसे बचें। इसके बजाय [java.time] (http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) कक्षाओं का उपयोग करें। –