tl; डॉ
LocalDateTime.parse( // Lacking an offset or time zone, parse as a `LocalDateTime`. *Not* a specific moment in time.
"2008-01-01 13:15:00".replace( " " , "T" ) // Alter input string to comply with ISO 8601 standard format.
)
.toLocalDate() // Extract a date-only value.
.atStartOfDay( // Do not assume the day starts at 00:00:00. Let class determine start-of-day.
ZoneId.of( "Europe/Paris" ) // Determining a specific start-of-day requires a time zone.
) // Result is a `ZonedDateTime` object. At this point we have a specific moment in time, a point on the timeline.
.toString() // Generate a String in standard ISO 8601 format, wisely extended to append the name of the time zone in square brackets.
2008-01-01T00: 00 + 01: 00 [यूरोप / पेरिस]
अपने वांछित प्रारूप में एक स्ट्रिंग उत्पन्न करने के लिए, पास करें DateTimeFormatter
।
LocalDateTime.parse( // Lacking an offset or time zone, parse as a `LocalDateTime`. *Not* a specific moment in time.
"2008-01-01 13:15:00".replace( " " , "T" ) // Alter input string to comply with ISO 8601 standard format.
)
.toLocalDate() // Extract a date-only value.
.atStartOfDay( // Do not assume the day starts at 00:00:00. Let class determine start-of-day.
ZoneId.of( "Europe/Paris" ) // Determining a specific start-of-day requires a time zone.
) // Result is a `ZonedDateTime` object. At this point we have a specific moment in time, a point on the timeline.
.format( // Generate a String representing the object’s value.
DateTimeFormatter.ISO_LOCAL_DATE_TIME // Built-in predefined formatter close to what you want.
)
.replace( "T" , " " ) // Replace the standard’s use of a 'T' in the middle with your desired SPACE character.
2008-01-01 00:00:00
विवरण
अन्य उत्तर सही हैं, लेकिन पुराने समय-समय की कक्षाओं का उपयोग करते हैं जो अब java.time फ्रेमवर्क द्वारा उल्लिखित हैं।
java.time
Java.time फ्रेमवर्क जावा 8 और बाद में बनाया गया है। जावा। टाइम की अधिकांश कार्यक्षमता जावा 6 और 7 ( थ्रीटीन-बैकपोर्ट ) पर वापस पोर्ट की गई है और आगे एंड्रॉइड ( थ्रीटेनबप ) के लिए अनुकूलित है ।
आईएसओ 8601 प्रारूप के विहित संस्करण के अनुपालन के लिए पहले इनपुट स्ट्रिंग में परिवर्तन करें। मानक ISO 8601 प्रारूप का उपयोग java.time कक्षाओं में डिफ़ॉल्ट रूप से पार्सिंग / जनरेटिंग स्ट्रिंग्स के लिए किया जाता है जो दिनांक-समय मानों का प्रतिनिधित्व करते हैं। हमें उस SPACE को बीच में बदलने की आवश्यकता है a T
।
String input = "2008-01-01 13:15:00".replace( " " , "T" ); // → 2008-01-01T13:15:00
अब हम इसे एक के रूप में पार्स कर सकते हैं LocalDateTime
, जहां "स्थानीय" का अर्थ है कोई विशिष्ट स्थानीयता नहीं। इनपुट में किसी भी ऑफसेट-यूटीसी या समय क्षेत्र की जानकारी का अभाव है ।
LocalDateTime ldt = LocalDateTime.parse( input );
ldt.toString () ... 2008-01-01T13: 15: 00
यदि आप समय-समय पर या समय-क्षेत्र के बारे में परवाह नहीं करते हैं, तो a में कनवर्ट करें LocalDate
।
LocalDate ld = ldt.toLocalDate();
ld.toString () ... 2008-01-01
पहला पल
यदि इसके बजाय आप दिन के पहले क्षण के लिए दिन का समय निर्धारित करना चाहते हैं ZonedDateTime
, तो एक वर्ग का उपयोग करें , फिर किसी विधि को LocalDate
उसकी atStartOfDay
विधि को कॉल करें । ध्यान रखें कि 00:00:00
डेलाइट सेविंग टाइम या शायद अन्य विसंगतियों के कारण पहला क्षण नहीं हो सकता है ।
समय क्षेत्र महत्वपूर्ण है क्योंकि किसी भी क्षण के लिए तिथि क्षेत्र के अनुसार दुनिया भर में बदलती है। उदाहरण के लिए, पेरिस में आधी रात के बाद के कुछ क्षण पेरिसियों के लिए एक नया दिन है, लेकिन अभी भी कनाडाई लोगों के लिए मॉन्ट्रियल में "कल" है।
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ldt.atZone( zoneId );
LocalDate ldFromZdt = zdt.toLocalDate();
ZonedDateTime zdtStartOfDay = ldFromZdt.atStartOfDay( zoneId );
zdtStartOfDay.toString ()… 2008-01-01T00: 00: 00-05: 00 [अमेरिका / मॉन्ट्रियल]
यु.टी. सी
UTC टाइम ज़ोन के लेंस के माध्यम से उस क्षण को देखने के लिए , एक Instant
ऑब्जेक्ट निकालें । दोनों समयरेखा पर एक ही पल का प्रतिनिधित्व करेंगे ZonedDateTime
और Instant
दो अलग - अलग दीवार-घड़ी के रूप में दिखाई देंगे ।
एक Instant
मूलभूत भवन-खंड वर्ग है java.time में, हमेशा यूटीसी में परिभाषा के अनुसार। इस वर्ग का अक्सर उपयोग करें, जैसा कि आप आमतौर पर अपने व्यापार तर्क, डेटा भंडारण और यूटीसी में डेटा एक्सचेंज कर रहे होंगे।
Instant instant = zdtStartOfDay.toInstant();
Instant.toString ()… 2008-01-01T05: 00: 00Z
हम आधी रात के बजाय सुबह 5 बजे देखते हैं। मानक प्रारूप में, Z
अंत Zulu
"UTC" का अर्थ और कम होता है।
जावा के बारे में
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date
, Calendar
, और SimpleDateFormat
।
Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है ।
आप अपने डेटाबेस से सीधे java.time वस्तुओं का आदान-प्रदान कर सकते हैं । JDBC 4.2 या उसके बाद के JDBC ड्राइवर का अनुपालन करें । तार की कोई जरूरत नहीं, कक्षाओं की कोई जरूरत नहीं ।java.sql.*
Java.time कक्षाएं कहाँ से प्राप्त करें?
ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के लिए भविष्य के संभावित अतिरिक्त के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval
, YearWeek
, YearQuarter
, और अधिक ।