tl; डॉ
आधुनिक दृष्टिकोण java.time कक्षाओं का उपयोग करता है ।
YearMonth.from(
ZonedDateTime.parse(
"Mon Mar 14 16:02:37 GMT 2011" ,
DateTimeFormatter.ofPattern( "E MMM d HH:mm:ss z uuuu" )
)
).toString()
2011-03
विरासत की तारीखों की कक्षाओं से बचें
आधुनिक तरीका java.time कक्षाओं के साथ है। पुराने समय-समय की कक्षाएं जैसे Calendar
खराब-डिज़ाइन, भ्रमित और परेशानी पैदा करने वाली साबित हुई हैं।
अपने स्ट्रिंग इनपुट से मिलान करने के लिए एक कस्टम फ़ॉर्मेटर को परिभाषित करें।
String input = "Mon Mar 14 16:02:37 GMT 2011";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM d HH:mm:ss z uuuu" );
पार्स ए के रूप में ZonedDateTime
।
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
आप वर्ष और महीने में रुचि रखते हैं। Java.time कक्षाओं में YearMonth
उस उद्देश्य के लिए कक्षा शामिल है ।
YearMonth ym = YearMonth.from( zdt );
जरूरत पड़ने पर आप साल और महीने के नंबर के लिए पूछताछ कर सकते हैं।
int year = ym.getYear();
int month = ym.getMonthValue();
लेकिन toString
विधि मानक आईएसओ 8601 प्रारूप में एक स्ट्रिंग उत्पन्न करता है।
String output = ym.toString();
यह सब एक साथ रखो।
String input = "Mon Mar 14 16:02:37 GMT 2011";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM d HH:mm:ss z uuuu" );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
YearMonth ym = YearMonth.from( zdt );
int year = ym.getYear();
int month = ym.getMonthValue();
सांत्वना देना।
System.out.println( "input: " + input );
System.out.println( "zdt: " + zdt );
System.out.println( "ym: " + ym );
इनपुट: सोम मार १४ १६:० 16:३T जीएमटी २०११
zdt: 2011-03-14T16: 02: 37Z [GMT]
ym: 2011-03
लाइव कोड
देखें इस कोड IdeOne.com में चल रहा ।
रूपांतरण
यदि आपके पास कोई ऑब्जेक्ट होना चाहिएCalendar
, तो आप GregorianCalendar
पुरानी कक्षाओं में जोड़े गए नए तरीकों का उपयोग करके परिवर्तित कर सकते हैं।
GregorianCalendar gc = GregorianCalendar.from( zdt );
जावा के बारे में
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date
, Calendar
, और SimpleDateFormat
।
Joda समय परियोजना, अब में रखरखाव मोड , प्रवास java.time को सलाह देता है।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है ।
Java.time कक्षाएं कहाँ से प्राप्त करें?
ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के लिए भविष्य के संभावित अतिरिक्त के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval
, YearWeek
, YearQuarter
, और अधिक ।