जवाबों:
आप इसके लिए गेटर्स का उपयोग कर सकते हैं java.time.LocalDateTime।
LocalDateTime now = LocalDateTime.now();
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();
int hour = now.getHour();
int minute = now.getMinute();
int second = now.getSecond();
int millis = now.get(ChronoField.MILLI_OF_SECOND); // Note: no direct getter available.
System.out.printf("%d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, minute, second, millis);
या, जब आप अभी जावा 8 पर नहीं हैं, तो इसका उपयोग करें java.util.Calendar।
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH) + 1; // Note: zero based!
int day = now.get(Calendar.DAY_OF_MONTH);
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);
int millis = now.get(Calendar.MILLISECOND);
System.out.printf("%d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, minute, second, millis);
किसी भी तरह से, यह प्रिंट अब के रूप में:
2010-04-16 15: 15: 17.816
में कनवर्ट करने के intलिए String, का उपयोग करें String#valueOf()।
यदि आपकी मंशा सभी को मानव अनुकूल स्ट्रिंग प्रारूप में व्यवस्थित करने और प्रदर्शित करने के बाद है, तो बेहतर है कि जावा 8 का उपयोग करें java.time.format.DateTimeFormatter( यहां ट्यूटोरियल )
LocalDateTime now = LocalDateTime.now();
String format1 = now.format(DateTimeFormatter.ISO_DATE_TIME);
String format2 = now.atZone(ZoneId.of("GMT")).format(DateTimeFormatter.RFC_1123_DATE_TIME);
String format3 = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss", Locale.ENGLISH));
System.out.println(format1);
System.out.println(format2);
System.out.println(format3);
या जब आप जावा 8 पर अभी तक नहीं हैं, तो उपयोग करें java.text.SimpleDateFormat:
Date now = new Date(); // java.util.Date, NOT java.sql.Date or java.sql.Timestamp!
String format1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH).format(now);
String format2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH).format(now);
String format3 = new SimpleDateFormat("yyyyMMddHHmmss", Locale.ENGLISH).format(now);
System.out.println(format1);
System.out.println(format2);
System.out.println(format3);
किसी भी तरह से, यह पैदावार:
2010-04-16T15: 15: 17.816 शुक्र, 16 अप्रैल 2010 15:15:17 GMT 20100416151517
SimpleDateFormatया DateTimeFormatterकि विशेष कार्य :) के लिए
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH).format(new Date());
Joda-time पर स्विच करें और आप इसे तीन लाइनों में कर सकते हैं
DateTime jodaTime = new DateTime();
DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss.SSS");
System.out.println("jodaTime = " + formatter.print(jodaTime));
आपके पास कैलेंडर का उपयोग किए बिना दिनांक के अलग-अलग क्षेत्रों में भी सीधी पहुंच है।
System.out.println("year = " + jodaTime.getYear());
System.out.println("month = " + jodaTime.getMonthOfYear());
System.out.println("day = " + jodaTime.getDayOfMonth());
System.out.println("hour = " + jodaTime.getHourOfDay());
System.out.println("minute = " + jodaTime.getMinuteOfHour());
System.out.println("second = " + jodaTime.getSecondOfMinute());
System.out.println("millis = " + jodaTime.getMillisOfSecond());
आउटपुट निम्नानुसार है:
jodaTime = 2010-04-16 18:09:26.060
year = 2010
month = 4
day = 16
hour = 18
minute = 9
second = 26
millis = 60
इसके अनुसार Http://www.joda.org/joda-time/ के
जावा के लिए जोडा-टाइम डी वास्तविक मानक तिथि और समय पुस्तकालय है। जावा एसई 8 से, उपयोगकर्ताओं को java.time (JSR-310) पर माइग्रेट करने के लिए कहा जाता है।
// Java 8
System.out.println(LocalDateTime.now().getYear()); // 2015
System.out.println(LocalDateTime.now().getMonth()); // SEPTEMBER
System.out.println(LocalDateTime.now().getDayOfMonth()); // 29
System.out.println(LocalDateTime.now().getHour()); // 7
System.out.println(LocalDateTime.now().getMinute()); // 36
System.out.println(LocalDateTime.now().getSecond()); // 51
System.out.println(LocalDateTime.now().get(ChronoField.MILLI_OF_SECOND)); // 100
// Calendar
System.out.println(Calendar.getInstance().get(Calendar.YEAR)); // 2015
System.out.println(Calendar.getInstance().get(Calendar.MONTH ) + 1); // 9
System.out.println(Calendar.getInstance().get(Calendar.DAY_OF_MONTH)); // 29
System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY)); // 7
System.out.println(Calendar.getInstance().get(Calendar.MINUTE)); // 35
System.out.println(Calendar.getInstance().get(Calendar.SECOND)); // 32
System.out.println(Calendar.getInstance().get(Calendar.MILLISECOND)); // 481
// Joda Time
System.out.println(new DateTime().getYear()); // 2015
System.out.println(new DateTime().getMonthOfYear()); // 9
System.out.println(new DateTime().getDayOfMonth()); // 29
System.out.println(new DateTime().getHourOfDay()); // 7
System.out.println(new DateTime().getMinuteOfHour()); // 19
System.out.println(new DateTime().getSecondOfMinute()); // 16
System.out.println(new DateTime().getMillisOfSecond()); // 174
// Formatted
// 2015-09-28 17:50:25.756
System.out.println(new Timestamp(System.currentTimeMillis()));
// 2015-09-28T17:50:25.772
System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH).format(new Date()));
// Java 8
// 2015-09-28T17:50:25.810
System.out.println(LocalDateTime.now());
// joda time
// 2015-09-28 17:50:25.839
System.out.println(DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss.SSS").print(new org.joda.time.DateTime()));
जावा 8 और बाद में, java.time पैकेज का उपयोग करें ।
ZonedDateTime.now().getYear();
ZonedDateTime.now().getMonthValue();
ZonedDateTime.now().getDayOfMonth();
ZonedDateTime.now().getHour();
ZonedDateTime.now().getMinute();
ZonedDateTime.now().getSecond();
ZonedDateTime.now()डिफ़ॉल्ट समय-क्षेत्र में सिस्टम घड़ी से वर्तमान दिनांक-समय को वापस करने वाली एक स्थिर विधि है। सभी प्राप्त विधियाँ एक intमान लौटाती हैं।
LocalDateTimeठीक इसके लिए गलत वर्ग है। समय क्षेत्र या ऑफ़सेट-यूटीसी की किसी भी अवधारणा को खोना, इसका उपयोग किसी विशिष्ट क्षण को ट्रैक करने के लिए नहीं किया जा सकता है, यह समय रेखा पर एक बिंदु नहीं है। उपयोग Instant, ZonedDateTimeया OffsetDateTimeइसके बजाय।
ZonedDateTime।
ZonedDateTime.now( // Capture current moment as seen in the wall-clock time used by the people of a particular region (a time zone).
ZoneId.of( "America/Montreal" ) // Specify desired/expected time zone. Or pass `ZoneId.systemDefault` for the JVM’s current default time zone.
) // Returns a `ZonedDateTime` object.
.getMinute() // Extract the minute of the hour of the time-of-day from the `ZonedDateTime` object.
42
ZonedDateTimeएक विशेष क्षेत्र (एक समय क्षेत्र) के लोगों द्वारा उपयोग की जाने वाली दीवार-घड़ी के समय में वर्तमान क्षण को देखने के लिए उपयोग करें ZonedDateTime।
एक तिथि निर्धारित करने में एक समय क्षेत्र महत्वपूर्ण है। किसी भी क्षण के लिए, तिथि क्षेत्र के अनुसार दुनिया भर में भिन्न होती है। उदाहरण के लिए, पेरिस फ्रांस में मध्यरात्रि के कुछ मिनट बाद एक नया दिन है जबकि अभी भी "कल" मॉन्ट्रियल क्यूबेक में है ।
यदि कोई समय क्षेत्र निर्दिष्ट नहीं है, तो JVM अपने वर्तमान डिफ़ॉल्ट समय क्षेत्र को स्पष्ट रूप से लागू करता है। वह डिफ़ॉल्ट रनटाइम (!) के दौरान किसी भी समय बदल सकता है , इसलिए आपके परिणाम भिन्न हो सकते हैं। एक तर्क के रूप में स्पष्ट रूप से अपने वांछित / अपेक्षित समय क्षेत्र को निर्दिष्ट करने के लिए बेहतर है ।
के रूप में , या , के प्रारूप में एक उचित समय क्षेत्र नाम निर्दिष्ट करें । कभी इस तरह के रूप में 3-4 पत्र संक्षिप्त नाम का उपयोग या के रूप में वे कर रहे हैं नहीं सच समय क्षेत्र, नहीं मानकीकृत, और यहां तक कि अद्वितीय नहीं (!)।continent/regionAmerica/MontrealAfrica/CasablancaPacific/AucklandESTIST
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
डेट-टाइम के टुकड़ों को बाहर निकालने के लिए कई गेटर्स में से किसी को कॉल करें।
int year = zdt.getYear() ;
int monthNumber = zdt.getMonthValue() ;
String monthName = zdt.getMonth().getDisplayName( TextStyle.FULL , Locale.JAPAN ) ; // Locale determines human language and cultural norms used in localizing. Note that `Locale` has *nothing* to do with time zone.
int dayOfMonth = zdt.getDayOfMonth() ;
String dayOfWeek = zdt.getDayOfWeek().getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
int hour = zdt.getHour() ; // Extract the hour from the time-of-day.
int minute = zdt.getMinute() ;
int second = zdt.getSecond() ;
int nano = zdt.getNano() ;
Java.time वर्गों के लिए हल नैनोसेकंड । आपका प्रश्न मिलीसेकंड में एक सेकंड के अंश के लिए पूछा गया । जाहिर है, आप संभावित डेटा हानि की कीमत पर नैनोसेकंड को मिलिसेकंड में विभाजित करने के लिए एक लाख से विभाजित कर सकते हैं। या TimeUnitऐसे रूपांतरण के लिए एनम का उपयोग करें ।
long millis = TimeUnit.NANOSECONDS.toMillis( zdt.getNano() ) ;
DateTimeFormatterएक उत्पादन करने के लिए Stringपाठ, उपयोग के टुकड़े गठबंधन करने के लिए DateTimeFormatterवर्ग। इस पर अधिक जानकारी के लिए स्टैक ओवरफ्लो खोजें।
Instantआमतौर पर यूटीसी में क्षणों को ट्रैक करने के लिए सबसे अच्छा है। UTC के लिए एक ज़ोन किए गए दिनांक-समय से समायोजित करने के लिए, निकालें Instant।
Instant instant = zdt.toInstant() ;
और फिर से वापस जाओ।
ZonedDateTime zdt = instant.atZone( ZoneId.of( "Africa/Tunis" ) ) ;
LocalDateTimeकुछ अन्य उत्तर LocalDateTimeकक्षा का उपयोग करते हैं । वास्तविक समय पर नज़र रखने के उद्देश्य के लिए उपयुक्त नहीं है, समय पर विशिष्ट क्षण, क्योंकि यह जानबूझकर समय क्षेत्र या ऑफसेट-यूटीसी से किसी भी अवधारणा का अभाव है।
तो इसके लिए क्या LocalDateTimeअच्छा है? LocalDateTimeजब आप किसी विशिष्ट इलाके के बजाय किसी भी इलाके या सभी इलाकों में तारीख और समय लागू करने का इरादा रखते हैं, तो इसका उपयोग करें ।
![]()
उदाहरण के लिए, इस साल क्रिसमस की शुरुआत होती है LocalDateTime.parse( "2018-12-25T00:00:00" )। जब तक आप समय क्षेत्र (ए ZoneId) प्राप्त करने के लिए आवेदन नहीं करते हैं, तब तक उस मूल्य का कोई अर्थ नहीं है ZonedDateTime। क्रिसमस पहले किरिबाती में होता है , बाद में न्यूजीलैंड में और पूर्व एशिया में होता है। घंटे बाद क्रिसमस भारत में शुरू होता है। अधिक घंटे बाद अफ्रीका और यूरोप में। और अभी भी कई घंटे बाद तक अमेरिका में क्रिसमस नहीं। किसी भी एक स्थान पर शुरू होने वाले क्रिसमस का प्रतिनिधित्व किया जाना चाहिए ZonedDateTime। क्रिसमस हर जगह एक के साथ प्रतिनिधित्व किया है LocalDateTime।
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date, Calendar, और SimpleDateFormat।
Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है ।
आप अपने डेटाबेस से सीधे java.time वस्तुओं का आदान-प्रदान कर सकते हैं । JDBC 4.2 या उसके बाद के JDBC ड्राइवर का अनुपालन करें । तार की कोई जरूरत नहीं, कक्षाओं की कोई जरूरत नहीं ।java.sql.*
Java.time कक्षाएं कहाँ से प्राप्त करें?
या java.sql.Timestamp का उपयोग करें। कैलेंडर थोड़े भारी है, मैं इसे उत्पादन कोड में उपयोग करने के खिलाफ सुझाऊंगा। जोदा बेहतर है।
import java.sql.Timestamp;
public class DateTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(new Timestamp(System.currentTimeMillis()));
}
}
new Date()यहां उपयोग करेंगे । लेकिन आप अनुरोध के अनुसार आसानी से इसके अलग हिस्से कैसे प्राप्त करेंगे?
java.sql.Timestampइसे दबा दिया गया था java.time.Instant।
जावा 7 कैलेंडर में एक पंक्ति
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(Calendar.getInstance().getTime())
Java.util.Calendar वर्ग और उसके व्युत्पन्न के लिए एपीआई प्रलेखन को देखें (आप विशेष रूप से ग्रेगोरियन कालेंडर वर्ग में रुचि रख सकते हैं)।
java.util.Date, java.util.Calendarऔर java.text.SimpleDateFormatअब कर रहे हैं विरासत , द्वारा का स्थान ले लिया java.time जावा 8 और बाद में बनाया गया वर्गों। ओरेकल द्वारा ट्यूटोरियल देखें ।
कैलेंडर अब = नया कैलेंडर () // या नया ग्रेगोरियन कैलेन्डर (), या आपको जो भी स्वाद की आवश्यकता हो
अब। अब और नहीं
आदि।
MONTHऔर HOURस्थिर स्थिरांक हैं Calendar, उदाहरण के गुण नहीं।