मुझे जावा में वर्तमान दिनांक और समय कैसे मिलेगा?
मैं कुछ ऐसी चीज़ की तलाश में हूं जो DateTime.Now
C # से बराबर हो ।
मुझे जावा में वर्तमान दिनांक और समय कैसे मिलेगा?
मैं कुछ ऐसी चीज़ की तलाश में हूं जो DateTime.Now
C # से बराबर हो ।
जवाबों:
Date
बिना किसी तर्क के बस एक नई वस्तु का निर्माण करें ; यह नई वस्तु के लिए वर्तमान दिनांक और समय निर्दिष्ट करेगा।
import java.util.Date;
Date d = new Date();
शून्य-तर्क निर्माता के लिए Javadocs के शब्दों में :
दिनांक ऑब्जेक्ट आवंटित करता है और इसे प्रारंभ करता है ताकि यह उस समय का प्रतिनिधित्व करता है जिस पर इसे आवंटित किया गया था , निकटतम मिलीसेकंड के लिए मापा गया था ।
सुनिश्चित करें कि आप उपयोग कर रहे हैं java.util.Date
और नहीं java.sql.Date
- उत्तरार्द्ध में शून्य-आर्ग निर्माता नहीं है, और कुछ अलग शब्दार्थ हैं जो पूरी तरह से अलग बातचीत का विषय हैं। :)
जावा तिथि और कैलेंडर कक्षाओं को कई लोगों द्वारा खराब तरीके से डिजाइन किए जाने पर विचार किया जाता है। आपको जोडा टाइम पर एक नज़र डालनी चाहिए , जो आमतौर पर जावा की अंतर्निहित तिथि पुस्तकालयों के बदले में उपयोग की जाने वाली लाइब्रेरी है।
DateTime.Now
जोडा टाइम के बराबर है:
DateTime dt = new DateTime();
अपडेट करें
जैसा कि टिप्पणियों में कहा गया है, जोडा टाइम के नवीनतम संस्करणों में एक DateTime.now()
विधि है, इसलिए:
DateTime dt = DateTime.now();
Instant.now()
जावा 8 और बाद में java.util.Date क्लास को नए java.time पैकेज ( ट्यूटोरियल ) द्वारा आगे बढ़ाया गया है। पुराने java.util.Date/.Calendar क्लासेस कुख्यात परेशान करने वाली, भ्रमित करने वाली और त्रुटिपूर्ण हैं। इनसे बचें।
ZonedDateTime
Java.time में वर्तमान क्षण प्राप्त करें।
ZonedDateTime now = ZonedDateTime.now();
एक ZonedDateTime
इनकैप्सुलेट्स:
यदि कोई समय क्षेत्र निर्दिष्ट नहीं है, तो आपके JVM के वर्तमान डिफ़ॉल्ट समय क्षेत्र को चुपचाप सौंपा गया है। डिफ़ॉल्ट पर अंतर्निहित भरोसा करने की तुलना में अपने वांछित / अपेक्षित समय क्षेत्र को निर्दिष्ट करने के लिए बेहतर है।
ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = ZonedDateTime.now( z );
आमतौर पर यूटीसी समय क्षेत्र में अपने बैक-एंड काम (बिजनेस लॉजिक, डेटाबेस, स्टोरेज, डेटा एक्सचेंज) करने की आदत डालने के लिए बेहतर है । उपरोक्त कोड JVM के वर्तमान डिफ़ॉल्ट समय क्षेत्र पर निर्भर करता है।
Instant
वर्ग नैनोसेकंड के एक संकल्प के साथ UTC में समय रेखा में एक पल के प्रतिनिधित्व करता है।
Instant instant = Instant.now();
Instant
वर्ग java.time में एक बुनियादी इमारत ब्लॉक वर्ग है और अपने कोड में अक्सर इस्तेमाल किया जा सकता है।
जब आपको स्वरूपण में अधिक लचीलेपन की आवश्यकता होती है, तो एक में रूपांतरित करें OffsetDateTime
। कोई ZoneOffset
वस्तु निर्दिष्ट करें । यूटीसी के लिए यूटीसी के लिए आसान स्थिरांक का उपयोग करें ।
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );
आप उपयोगकर्ता को प्रस्तुति के लिए आसानी से किसी अन्य समय क्षेत्र में समायोजित कर सकते हैं। एक उचित समय क्षेत्र नाम का उपयोग करें , कभी भी 3-4 अक्षर कोड जैसे EST
या IST
।
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime nowMontreal = instant.atZone( z );
उस दिनांक-समय मान का स्ट्रिंग प्रतिनिधित्व उत्पन्न करें, स्थानीयकृत।
String output = DateTimeFormatter
.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH )
.format ( nowMontreal );
Instant
या, यूटीसी में रहने के लिए, उपयोग करें Instant
। एक Instant
वस्तु समय रेखा पर एक क्षण का प्रतिनिधित्व करती है, नैनोसेकंड संकल्प के लिए, हमेशा यूटीसी में। यह ज़ोन की तारीख-समय के लिए बिल्डिंग ब्लॉक प्रदान करता है, साथ ही टाइम ज़ोन असाइनमेंट भी। आप इसे इस तरह से वैचारिक रूप से सोच सकते हैं:
आप Instant
ए से अर्क निकाल सकते हैं ZonedDateTime
।
Instant instantNow = zdt.toInstant();
आप एक पल के साथ शुरू कर सकते हैं। यहां समय क्षेत्र निर्दिष्ट करने की आवश्यकता नहीं है, जैसा Instant
कि हमेशा यूटीसी में होता है।
Instant now = Instant.now();
मैं कैलेंडर ऑब्जेक्ट का उपयोग करना पसंद करता हूं।
Calendar now = GregorianCalendar.getInstance()
मुझे इसके साथ काम करना बहुत आसान लगता है। आप कैलेंडर से दिनांक ऑब्जेक्ट भी प्राप्त कर सकते हैं।
http://java.sun.com/javase/6/docs/api/java/util/GregorianCalendar.html
Calendar.getInstance()
जावा 8 में यह है:
ZonedDateTime dateTime = ZonedDateTime.now();
import java.util.Date;
Date now = new Date();
ध्यान दें कि दिनांक ऑब्जेक्ट उत्परिवर्तनीय है और यदि आप कुछ भी परिष्कृत करना चाहते हैं, तो jodatime का उपयोग करें ।
java.lang.System.currentTimeMillis();
युग के बाद से डेटाइम वापस आ जाएगी
यदि आप एक नई दिनांक ऑब्जेक्ट बनाते हैं, तो डिफ़ॉल्ट रूप से इसे वर्तमान समय पर सेट किया जाएगा:
import java.util.Date;
Date now = new Date();
जावा को हमेशा तारीख और समय उपयोग के मामलों के लिए अपर्याप्त समर्थन मिला है। उदाहरण के लिए, मौजूदा वर्ग (जैसे कि java.util.Date
और SimpleDateFormatter
) थ्रेड-सुरक्षित नहीं हैं जो समवर्ती मुद्दों को जन्म दे सकता है। इसके अलावा एपीआई में कुछ खामियां हैं। उदाहरण के लिए, java.util.Date
1900 में शुरू होने वाले साल , महीने 1 से शुरू होते हैं, और दिन 0 से शुरू होते हैं — बहुत सहज नहीं। इन मुद्दों ने तीसरे पक्ष की तारीख और समय पुस्तकालयों की लोकप्रियता को बढ़ावा दिया, जैसे कि Joda-Time
। एक नई तारीख और समय को संबोधित करने के लिए एपीआई को जावा एसई 8 के लिए डिज़ाइन किया गया है।
LocalDateTime timePoint = LocalDateTime.now();
System.out.println(timePoint);
डॉक्टर के अनुसार :
पद्धति
now()
सिस्टम दिनांक और डिफ़ॉल्ट समय-क्षेत्र का उपयोग करके वर्तमान दिनांक-समय लौटाती है, शून्य नहीं । यह डिफ़ॉल्ट समय-क्षेत्र में सिस्टम घड़ी से वर्तमान दिनांक-समय प्राप्त करता है। यह वर्तमान तिथि-समय प्राप्त करने के लिए डिफ़ॉल्ट समय-क्षेत्र में सिस्टम घड़ी को क्वेरी करेगा। इस पद्धति का उपयोग करने से परीक्षण के लिए एक वैकल्पिक घड़ी का उपयोग करने की क्षमता को रोका जा सकेगा क्योंकि घड़ी हार्ड-कोडेड है।