java - जावा में yyyy-MM-dd प्रारूप की कैलेंडर तिथि




date calendar converter (8)

जावा Date 1 जनवरी 1 9 70, 00:00:00 जीएमटी के बाद मिलीसेकंड की संख्या के लिए एक कंटेनर है।

जब आप System.out.println(date) जैसे कुछ का उपयोग करते हैं, तो जावा सामग्री को मुद्रित करने के लिए Date.toString() का उपयोग करता है।

इसे बदलने का एकमात्र तरीका Date को ओवरराइड करना है और Date . Date.toString() का अपना कार्यान्वयन प्रदान करना है। अब आप अपने आईडीई को फायर करने से पहले कोशिश करें, मैं नहीं करूंगा; यह केवल मामलों को जटिल करेगा। आप जिस प्रारूप का उपयोग करना चाहते हैं (या प्रदर्शन) की तारीख को स्वरूपित करने से बेहतर हैं।

जावा 8+

LocalDateTime ldt = LocalDateTime.now().plusDays(1);
DateTimeFormatter formmat1 = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH);
System.out.println(ldt);
// Output "2018-05-12T17:21:53.658"

String formatter = formmat1.format(ldt);
System.out.println(formatter);
// 2018-05-12

जावा 8 से पहले

आपको थ्रीटेन बैकपोर्ट का उपयोग करना चाहिए

निम्नलिखित ऐतिहासिक उद्देश्यों के लिए बनाए रखा जाता है (मूल उत्तर के रूप में)

आप क्या कर सकते हैं, तिथि प्रारूपित है।

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(cal.getTime());
// Output "Wed Sep 26 14:23:28 EST 2012"

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
// Output "2012-09-26"

System.out.println(format1.parse(formatted));
// Output "Wed Sep 26 00:00:00 EST 2012"

ये वास्तव में एक ही तारीख हैं, जो अलग-अलग प्रतिनिधित्व करते हैं।

कैलेंडर तिथि को yyyy-MM-dd प्रारूप में कैसे परिवर्तित करें।

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String date1 = format1.format(date);            
Date inActiveDate = null;
try {
    inActiveDate = format1.parse(date1);
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

यह inActiveDate = Wed Sep 26 00:00:00 IST 2012 उत्पादन करेगा। लेकिन मुझे 2012-09-26 की क्या ज़रूरत है। मेरा उद्देश्य हाइबरनेट मानदंडों का उपयोग करके इस डेटाबेस की दूसरी तारीख के साथ मेरी डेटाबेस की तुलना करना है। तो मुझे yyyy-MM-dd प्रारूप में दिनांक वस्तु की आवश्यकता है।


java.time

मैडप्रोग्रामर का जवाब सही है, खासकर Joda-Time बारे में टिप। जोडा-टाइम के उत्तराधिकारी को अब जावा 8 में नया जावा.टाइम पैकेज के रूप में बनाया गया है। जावा 8 में उदाहरण कोड यहां दिया गया है।

डेट-टाइम (स्थानीय तिथि के विपरीत) के साथ काम करते समय , महत्वपूर्ण समय क्षेत्र । दिन का महीना समय क्षेत्र पर निर्भर करता है। उदाहरण के लिए, भारत का समय क्षेत्र +05:30 (यूटीसी से ढाई घंटे आगे) है, जबकि France केवल एक घंटा आगे है। तो भारत में एक नए दिन में एक पल एक तारीख है जबकि फ्रांस में उसी पल में "कल की" तारीख है। किसी भी समय क्षेत्र या ऑफ़सेट जानकारी की कमी वाले स्ट्रिंग आउटपुट बनाना अस्पष्टता पैदा कर रहा है। आपने YYYY-MM-DD आउटपुट के लिए कहा है, इसलिए मैंने प्रदान किया है, लेकिन मैं इसकी अनुशंसा नहीं करता हूं। ISO_LOCAL_DATE बजाय मैं इस आउटपुट को प्राप्त करने के लिए ISO_DATE का उपयोग ISO_DATE : 2014-02-25+05:30

ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId );

DateTimeFormatter formatterOutput = DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity.
String output = formatterOutput.format( zonedDateTime );

कंसोल पर डंप करें ...

System.out.println( "zonedDateTime: " + zonedDateTime );
System.out.println( "output: " + output );

जब दौड़ें ...

zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata]
output: 2014-02-25

Joda समय

Joda-Time लाइब्रेरी का उपयोग कर इसी तरह का कोड, java.time के अग्रदूत।

DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" );
DateTime dateTime = DateTime.now( zone );
DateTimeFormatter formatter = ISODateTimeFormat.date();
String output = formatter.print( dateTime );

आईएसओ 8601

वैसे, आपके इनपुट स्ट्रिंग का वह प्रारूप एक मानक प्रारूप है, जो ISO 8601 द्वारा परिभाषित कई आसान दिनांक-समय स्ट्रिंग प्रारूपों में से एक है

जोडा-टाइम और जावा.टाइम दोनों डिफ़ॉल्ट रूप से आईएसओ 8601 प्रारूपों का उपयोग करते हैं जब विभिन्न दिनांक-समय मानों के स्ट्रिंग प्रस्तुतियों को पार्सिंग और उत्पन्न करते हैं।


Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 7);
Date date = c.getTime();
SimpleDateFormat ft = new SimpleDateFormat("MM-dd-YYYY");
JOptionPane.showMessageDialog(null, ft.format(date));

यह आपकी तिथि + 7 दिन महीने, दिन और वर्ष प्रारूप में एक विंडो विंडो फलक में प्रदर्शित करेगा।


java.util.Date ऑब्जेक्ट कस्टम प्रारूप में दिनांक का प्रतिनिधित्व नहीं कर सकता है, इसके बजाय आपको SimpleDateFormat.format विधि का उपयोग SimpleDateFormat.format जो string देता string

String myString=format1.format(date);

आपका कोड गलत है। पार्सिंग तिथि का कोई बिंदु नहीं है और इसे डेट ऑब्जेक्ट के रूप में रखें।

जब आप प्रदर्शित करना चाहते हैं और उसे स्ट्रिंग के रूप में रखना चाहते हैं तो आप कैलेंडर डेट ऑब्जेक्ट को प्रारूपित कर सकते हैं।

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");          
String inActiveDate = null;
try {
    inActiveDate = format1.format(date);
    System.out.println(inActiveDate );
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

मुझे यह कोड मिला जहां डेटाबेस में डेट फ़ील्ड की तुलना करने के लिए दिनांक में प्रारूप की तुलना की जाती है ... यह आपके लिए उपयोगी हो सकता है ...

जब आप सरलीकृत प्रारूप का उपयोग करके स्ट्रिंग को आज तक परिवर्तित करते हैं, तो mysql डेटाबेस में दिनांक फ़ील्ड से तुलना करना मुश्किल है।

तो इस प्रारूप में चयन STR_to_DATE ('yourdate', '% m /% d /% y') -> का उपयोग करके प्रारूप में जावा स्ट्रिंग दिनांक को परिवर्तित करें, फिर आपको mysql दिनांक फ़ील्ड का सटीक दिनांक प्रारूप प्राप्त होगा।

http://javainfinite.com/java/java-convert-string-to-date-and-compare/


java.util.Date ऑब्जेक्ट को पार्स करने के लिए आपको अपने स्वयं के प्रारूप का उपयोग करके पहले स्ट्रिंग में कनवर्ट करना होगा।

inActiveDate = format1.parse(  format1.format(date)  );

लेकिन मेरा मानना ​​है कि आप यहां अनावश्यक हैं।


जावा 8 के साथ, नया जावा.टाइम पैकेज इस्तेमाल किया जाना चाहिए।

ऑब्जेक्ट्स अपरिवर्तनीय हैं, समय क्षेत्र और दिन की हल्की बचत को ध्यान में रखा जाता है।

आप पुराने java.util.Date ऑब्जेक्ट से ZonedDateTime ऑब्जेक्ट बना सकते हैं:

    Date date = new Date();
    ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault());




java date calendar converter