java.util.Date प्रारूप रूपांतरण yyyy-mm-dd से mm-dd-yyyy तक


89

मेरे पास java.util.Dateप्रारूप में है yyyy-mm-dd। मैं चाहता हूं कि यह प्रारूप में होmm-dd-yyyy

नीचे दिया गया नमूना उपयोग मैंने इस रूपांतरण के लिए किया है:

// Setting the pattern
SimpleDateFormat sm = new SimpleDateFormat("mm-dd-yyyy");
// myDate is the java.util.Date in yyyy-mm-dd format
// Converting it into String using formatter
String strDate = sm.format(myDate);
//Converting the String back to java.util.Date
Date dt = sm.parse(strDate);

फिर भी जो आउटपुट मुझे मिल रहा है वह प्रारूप में नहीं है mm-dd-yyyy

कृपया मुझे पता है कि कैसे एक java.util.Dateसे प्रारूपित yyyy-mm-ddकरने के लिएmm-dd-yyyy


2
आपके कहने का क्या मतलब है .. मेरे पास एक java.util है। प्रारूप में yyyy-mm-dd?
जयमोहन 28:13

इसका अर्थ है कि UI को प्रदर्शित करने के लिए मेरे कोड में वर्तमान प्रारूप है yyyy-mm-dd
user182944

1
कृपया छोटे मिमी को MM में बदलें
दिलीप डी

जवाबों:


159

Date 1 जनवरी 1970 को यूनिक्स युग (00:00:00 यूटीसी) के बाद से मिलीसेकंड की संख्या के लिए एक कंटेनर है।

इसमें प्रारूप की कोई अवधारणा नहीं है।

जावा 8+

LocalDateTime ldt = LocalDateTime.now();
System.out.println(DateTimeFormatter.ofPattern("MM-dd-yyyy", Locale.ENGLISH).format(ldt));
System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH).format(ldt));
System.out.println(ldt);

आउटपुट ...

05-11-2018
2018-05-11
2018-05-11T17:24:42.980

जावा 7-

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

मूल उत्तर

उदाहरण के लिए...

Date myDate = new Date();
System.out.println(myDate);
System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(myDate));
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(myDate));
System.out.println(myDate);

आउटपुट ...

Wed Aug 28 16:20:39 EST 2013
08-28-2013
2013-08-28
Wed Aug 28 16:20:39 EST 2013

किसी भी स्वरूपण ने अंतर्निहित Dateमूल्य को नहीं बदला है । इस का उद्देश्य है DateFormatterरों

अतिरिक्त उदाहरण के साथ अद्यतन किया गया

बस के मामले में पहला उदाहरण समझ में नहीं आया ...

यह उदाहरण एक ही तिथि को प्रारूपित करने के लिए दो फॉर्मेटर्स का उपयोग करता है। मैं फिर से इन्हीं फॉर्मेटर्स का उपयोग करके Stringमानों को वापस पार्स करता हूं Date। परिणामी पार्स जिस तरह से Dateरिपोर्ट करता है वह मूल्य में परिवर्तन नहीं करता है ।

Date#toStringयह सामग्री का सिर्फ एक डंप है। आप इसे बदल नहीं सकते हैं, लेकिन आप Dateकिसी भी तरह से ऑब्जेक्ट को प्रारूपित कर सकते हैं

try {
    Date myDate = new Date();
    System.out.println(myDate);

    SimpleDateFormat mdyFormat = new SimpleDateFormat("MM-dd-yyyy");
    SimpleDateFormat dmyFormat = new SimpleDateFormat("yyyy-MM-dd");

    // Format the date to Strings
    String mdy = mdyFormat.format(myDate);
    String dmy = dmyFormat.format(myDate);

    // Results...
    System.out.println(mdy);
    System.out.println(dmy);
    // Parse the Strings back to dates
    // Note, the formats don't "stick" with the Date value
    System.out.println(mdyFormat.parse(mdy));
    System.out.println(dmyFormat.parse(dmy));
} catch (ParseException exp) {
    exp.printStackTrace();
}

कौन सा आउटपुट ...

Wed Aug 28 16:24:54 EST 2013
08-28-2013
2013-08-28
Wed Aug 28 00:00:00 EST 2013
Wed Aug 28 00:00:00 EST 2013

इसके अलावा, प्रारूप पैटर्न से सावधान रहें। को करीब से देख लो SimpleDateFormatबनाने के लिए सुनिश्चित करें कि आप गलत पैटर्न का उपयोग नहीं कर रहे हैं;)


शानदार जवाब ने मेरी मदद की। प्रारूपों का परीक्षण करने के लिए एक कमांड-लाइन नमूना ऐप चलाने की कोशिश कर रहा था (एंड्रॉइड क्लास में उपयोग करने से पहले) - मुझे आवश्यक आयात नहीं मिला। प्रदान किए गए उत्तरों में से कोई भी शामिल नहीं है कि याद रखें: आयात java.text.SimpleDateFormat;
राडदेवस

34
SimpleDateFormat("MM-dd-yyyy");

के बजाय

SimpleDateFormat("mm-dd-yyyy");

क्योंकि MM points Month,mm points minutes

SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy");
String strDate = sm.format(myDate);

इस परिवर्तन के अलावा, उपरोक्त उपयोग विधि में मुझे कोई अन्य परिवर्तन करने की आवश्यकता है? मैं अभी इसका परीक्षण नहीं कर पा रहा हूं, इसलिए यह पूछ रहा हूं। इसके अलावा, क्या स्वरूपण के लिए कोई बेहतर तरीका है java.util.Date?
user182944

15

'एम' (कैपिटल) महीने का प्रतिनिधित्व करता है और 'एम' (सरल) मिनट का प्रतिनिधित्व करता है

कुछ उदाहरण महीनों के लिए

'M' -> 7  (without prefix 0 if it is single digit)
'M' -> 12

'MM' -> 07 (with prefix 0 if it is single digit)
'MM' -> 12

'MMM' -> Jul (display with 3 character)

'MMMM' -> December (display with full name)

कुछ उदाहरण मिनटों के लिए

'm' -> 3  (without prefix 0 if it is single digit)
'm' -> 19
'mm' -> 03 (with prefix 0 if it is single digit)
'mm' -> 19

3

tl; डॉ

LocalDate.parse( 
    "01-23-2017" , 
    DateTimeFormatter.ofPattern( "MM-dd-uuuu" )
)

विवरण

मेरे पास एक java.util है। प्रारूप में yyyy-mm-dd

जैसा कि अन्य उल्लेख किया गया है, Dateवर्ग का कोई प्रारूप नहीं है। यह यूटीसी में 1970 की शुरुआत से मिलीसेकंड की गिनती है। कोई सेटिंग संलग्न नहीं है।

java.time

अन्य उत्तर परेशान पुरानी विरासत तिथि-समय की कक्षाओं का उपयोग करते हैं, जो अब java.time कक्षाओं द्वारा दबाए गए हैं।

यदि आपके पास एक है java.util.Date, तो किसी Instantऑब्जेक्ट में कनवर्ट करें । Instantकक्षा में समय रेखा पर एक पल का प्रतिनिधित्व करता यूटीसी के एक संकल्प के साथ नैनोसेकंड (नौ (9) एक दशमलव भिन्न के अंकों के लिए)।

Instant instant = myUtilDate.toInstant();

समय क्षेत्र

अन्य उत्तर समय क्षेत्र के महत्वपूर्ण मुद्दे की अनदेखी करते हैं। तिथि निर्धारित करने के लिए एक समय क्षेत्र की आवश्यकता होती है। किसी भी क्षण के लिए, तिथि क्षेत्र के अनुसार दुनिया भर में भिन्न होती है। पेरिस फ्रांस में आधी रात के कुछ मिनट बाद एक नया दिन है, जबकि अभी भी मॉन्ट्रियल क्यूबेक में "कल" ​​है।

उस समय क्षेत्र को परिभाषित करें जिसके द्वारा आप अपने लिए संदर्भ चाहते हैं Instant

ZoneId z = ZoneId.of( "America/Montreal" );

ZoneIdपाने के लिए आवेदन करें ZonedDateTime

ZonedDateTime zdt = instant.atZone( z );

LocalDate

यदि आप केवल समय के बिना तारीख के बारे में परवाह करते हैं, तो एक निकालें LocalDate

LocalDate localDate = zdt.toLocalDate();

मानक ISO 8601 प्रारूप में एक स्ट्रिंग उत्पन्न करने के लिए, YYYY-MM-DD, बस कॉल करें toString। Java.time कक्षाएं स्ट्रिंग उत्पन्न / पार्स करते समय डिफ़ॉल्ट रूप से मानक प्रारूपों का उपयोग करती हैं।

String output = localDate.toString();

2017/01/23

यदि आप MM-DD-YYYY प्रारूप चाहते हैं, तो एक स्वरूपण पैटर्न को परिभाषित करें।

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM-dd-uuuu" );
String output = localDate.format( f );

ध्यान दें कि स्वरूपण पैटर्न कोड केस-संवेदी होते हैं। प्रश्न में कोड (वर्ष के महीने mm) के बजाय गलत तरीके से उपयोग किया गया (घंटे का मिनट MM)।

DateTimeFormatterपार्सिंग के लिए एक ही वस्तु का उपयोग करें । Java.time कक्षाएं थ्रेड-सुरक्षित हैं, इसलिए आप इस ऑब्जेक्ट को इधर-उधर रख सकते हैं और थ्रेड्स के पार भी इसे बार-बार पुन: उपयोग कर सकते हैं।

LocalDate localDate = LocalDate.parse( "01-23-2017" , f );

जावा के बारे में

Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date, Calendar, और SimpleDateFormat

Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।

अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है

Java.time कक्षाएं कहाँ से प्राप्त करें?

ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के लिए भविष्य के संभावित अतिरिक्त के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval, YearWeek, YearQuarter, और अधिक


1

यह नीचे दिए गए कोड का सरल उपयोग है।

final Date todayDate = new Date();

System.out.println(todayDate);

System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(todayDate));

System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(todayDate));

System.out.println(todayDate);

(ए) यह कोड समय क्षेत्र के महत्वपूर्ण मुद्दे की अनदेखी करता है। (बी) इस कोड में वर्षों से चली आ रही पुरानी पुरानी समय की परेशानियों का इस्तेमाल किया गया है। इनसे बचें। Java.time कक्षाओं द्वारा पूरक।
बेसिल बोर्के

1

आप दिन, महीने और वर्ष प्राप्त कर सकते हैं और उन्हें संक्षिप्त कर सकते हैं या नीचे दिए गए अनुसार MM-dd-yyyy प्रारूप का उपयोग कर सकते हैं।

Date date1 = new Date();
String mmddyyyy1 = new SimpleDateFormat("MM-dd-yyyy").format(date1);
System.out.println("Formatted Date 1: " + mmddyyyy1);



Date date2 = new Date();
Calendar calendar1 = new GregorianCalendar();
calendar1.setTime(date2);
int day1   = calendar1.get(Calendar.DAY_OF_MONTH);
int month1 = calendar1.get(Calendar.MONTH) + 1; // {0 - 11}
int year1  = calendar1.get(Calendar.YEAR);
String mmddyyyy2 = ((month1<10)?"0"+month1:month1) + "-" + ((day1<10)?"0"+day1:day1) + "-" + (year1);
System.out.println("Formatted Date 2: " + mmddyyyy2);



LocalDateTime ldt1 = LocalDateTime.now();  
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("MM-dd-yyyy");  
String mmddyyyy3 = ldt1.format(format1);  
System.out.println("Formatted Date 3: " + mmddyyyy3);  



LocalDateTime ldt2 = LocalDateTime.now();
int day2 = ldt2.getDayOfMonth();
int mont2= ldt2.getMonthValue();
int year2= ldt2.getYear();
String mmddyyyy4 = ((mont2<10)?"0"+mont2:mont2) + "-" + ((day2<10)?"0"+day2:day2) + "-" + (year2);
System.out.println("Formatted Date 4: " + mmddyyyy4);



LocalDateTime ldt3 = LocalDateTime.of(2020, 6, 11, 14, 30); // int year, int month, int dayOfMonth, int hour, int minute
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("MM-dd-yyyy");  
String mmddyyyy5 = ldt3.format(format2);   
System.out.println("Formatted Date 5: " + mmddyyyy5); 



Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(new Date());
int day3  = calendar2.get(Calendar.DAY_OF_MONTH); // OR Calendar.DATE
int month3= calendar2.get(Calendar.MONTH) + 1;
int year3 = calendar2.get(Calendar.YEAR);
String mmddyyyy6 = ((month3<10)?"0"+month3:month3) + "-" + ((day3<10)?"0"+day3:day3) + "-" + (year3);
System.out.println("Formatted Date 6: " + mmddyyyy6);



Date date3 = new Date();
LocalDate ld1 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date3)); // Accepts only yyyy-MM-dd
int day4  = ld1.getDayOfMonth();
int month4= ld1.getMonthValue();
int year4 = ld1.getYear();
String mmddyyyy7 = ((month4<10)?"0"+month4:month4) + "-" + ((day4<10)?"0"+day4:day4) + "-" + (year4);
System.out.println("Formatted Date 7: " + mmddyyyy7);



Date date4 = new Date();
int day5   = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getDayOfMonth();
int month5 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getMonthValue();
int year5  = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getYear();
String mmddyyyy8 = ((month5<10)?"0"+month5:month5) + "-" + ((day5<10)?"0"+day5:day5) + "-" + (year5);
System.out.println("Formatted Date 8: " + mmddyyyy8);



Date date5 = new Date();
int day6   = Integer.parseInt(new SimpleDateFormat("dd").format(date5));
int month6 = Integer.parseInt(new SimpleDateFormat("MM").format(date5));
int year6  = Integer.parseInt(new SimpleDateFormat("yyyy").format(date5));
String mmddyyyy9 = ((month6<10)?"0"+month6:month6) + "-" + ((day6<10)?"0"+day6:day6) + "-" + (year6);`enter code here`
System.out.println("Formatted Date 9: " + mmddyyyy9);

1

कृपया "एमएम" को "एमएम" राजधानी में बदल दें। यह नमूना कोड है।

        Date myDate = new Date();
        SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy");
       
        String strDate = sm.format(myDate);
        
        Date dt = sm.parse(strDate);
        System.out.println(strDate);

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.