java.util. তারিখ ফর্ম্যাট রূপান্তর 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


4
আপনি যখন বলবেন তখন কী বোঝাতে চাইছেন .. আমার jy.util.Date ফর্ম্যাটটি yyyy-mm-dd আছে?
জয়মোহন

এটা তোলে UI 'তে এটি প্রদর্শন করার জন্য আমার কোড উপস্থিত বিন্যাস মানে yyyy-mm-dd
ব্যবহারকারী 182944

4
দয়া করে ছোট মিমি এমএম
দিলিপ ডি

উত্তর:


158

Date ইউনিক্স পর্বের সময় থেকে মিলিসেকেন্ডের সংখ্যার জন্য ধারক (1 জানুয়ারী 1970: 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.SimpleDate Format;
রাদদেবস

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?
ব্যবহারকারী 182944

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.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();

স্ট্যান্ডার্ড আইএসও 8601 ফর্ম্যাটে একটি স্ট্রিং তৈরি করতে, YYYY-MM-DD, কেবল কল করুন toString। জাভা.টাইম ক্লাসগুলি স্ট্রিং তৈরি / পার্সিং করার সময় ডিফল্ট হিসাবে স্ট্যান্ডার্ড ফর্ম্যাটগুলি ব্যবহার করে।

String output = localDate.toString();

2017-01-23

আপনি যদি এমএম-ডিডি-ওয়াইওয়াই ফর্ম্যাট চান তবে একটি ফর্ম্যাটিং প্যাটার্নটি নির্ধারণ করুন।

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

নোট করুন যে ফর্ম্যাটিং প্যাটার্ন কোডগুলি কেস-সংবেদনশীল। প্রশ্নের কোডটি (বছরের মাসের mm) চেয়ে ভুলভাবে ব্যবহৃত হয়েছে (ঘন্টাের মিনিট MM)।

DateTimeFormatterবিশ্লেষণের জন্য একই অবজেক্টটি ব্যবহার করুন। জাভা.টাইম ক্লাসগুলি থ্রেড-নিরাপদ, সুতরাং আপনি এই বিষয়টিকে চারপাশে রাখতে পারেন এবং থ্রেড জুড়েও বারবার এটি পুনরায় ব্যবহার করতে পারেন।

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

জাভা.টাইম সম্পর্কে

Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই শ্রেণীর বিরক্তিজনক পুরাতন স্থানচ্যুত উত্তরাধিকার যেমন তারিখ-সময় শ্রেণীর java.util.Date, Calendar, &SimpleDateFormat

Joda-টাইম প্রকল্প, এখন রক্ষণাবেক্ষণ মোড , মাইগ্রেশনে উপদেশ java.time ক্লাস।

আরও জানতে, ওরাকল টিউটোরিয়াল দেখুন । এবং অনেকগুলি উদাহরণ এবং ব্যাখ্যাগুলির জন্য স্ট্যাক ওভারফ্লো অনুসন্ধান করুন। স্পেসিফিকেশনটি জেএসআর 310

জাভা.টাইম ক্লাস কোথায় পাবেন?

ThreeTen-অতিরিক্ত প্রকল্প অতিরিক্ত শ্রেণীর সাথে 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);

(ক) এই কোডটি সময় অঞ্চলগুলির গুরুত্বপূর্ণ সমস্যাটিকে উপেক্ষা করে। (খ) এই কোডটি বছরের পর বছর ধরে উত্তরাধিকার সূত্রে সমস্যাযুক্ত পুরানো তারিখের সময় ক্লাসগুলি ব্যবহার করে। এগুলি এড়িয়ে চলুন। জাভা.টাইম ক্লাস দ্বারা সরবরাহ করা।
বাসিল বাউরকে

1

আপনি দিন, মাস এবং বছর পেতে পারেন এবং তাদের সাথে একত্রীকরণ করতে পারেন বা নীচে বর্ণিত এমএম-ডিডি-ইয়ে ফর্ম্যাটটি ব্যবহার করতে পারেন।

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

দয়া করে ছোট "মিমি" মাসকে মূলধন "এমএম" এ পরিবর্তন করুন এটি কার্যকর হবে for নীচের রেফারেন্সের জন্য নমুনা কোডটি।

        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);

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.