কীভাবে জোদা-সময় তারিখটাইমকে কেবল মিমি / ডিডি / ইয়াই রূপান্তর করবেন?


189

আমার একটি স্ট্রিং রয়েছে " 11/15/2013 08:00:00", আমি এটিকে " 11/15/2013" এ ফর্ম্যাট করতে চাই , সঠিক DateTimeFormatterপ্যাটার্নটি কী?

আমি অনেকগুলি চেষ্টা করেছি এবং গুগল করেছি এবং এখনও সঠিক প্যাটার্নটি খুঁজে পাচ্ছি না।

সম্পাদনা করুন: আমি জাডা -টাইম খুঁজছি DateTimeFormatter, জাভার সিম্পলডেট ফরমেট না ..


2
tl; dr: তারিখটাইমফর্ম্যাট.ফোর্ড প্যাটার্ন ("এমএম / ডিডি / ইয়ি এইচ এইচ: মিমি: এসএস")। মুদ্রণ (তারিখটাইম.নো ())
— অ্যান্ড্রু

উত্তর:


385

জোদা সময়

একটি DateTimeFormatterব্যবহার তৈরি করুনDateTimeFormat.forPattern(String)

জোদা সময় ব্যবহার করে আপনি এটি এইভাবে করবেন:

String dateTime = "11/15/2013 08:00:00";
// Format for input
DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
// Parsing the date
DateTime jodatime = dtf.parseDateTime(dateTime);
// Format for output
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("MM/dd/yyyy");
// Printing the date
System.out.println(dtfOut.print(jodatime));

স্ট্যান্ডার্ড জাভা ≥ 8

জাভা 8 নতুন তারিখ এবং সময় গ্রন্থাগার চালু করেছিল , তারিখ এবং সময়গুলি মোকাবেলা করা সহজ করে তোলে। আপনি যদি স্ট্যান্ডার্ড জাভা সংস্করণ 8 বা তার বেশি ব্যবহার করতে চান তবে আপনি একটি ডেটটাইম ফর্ম্যাটর ব্যবহার করবেন । যেহেতু আপনার কাছে একটি সময় অঞ্চল নেই String, একটি জাভা.টাইম.লোক্যালডেটটাইম বা স্থানীয় তারিখ , অন্যথায় সময় জোনেড জাতগুলি জোনেডেটটাইম এবং জোনেডেট ব্যবহার করা যেতে পারে।

// Format for input
DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
// Parsing the date
LocalDate date = LocalDate.parse(dateTime, inputFormat);
// Format for output
DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy");
// Printing the date
System.out.println(date.format(outputFormat));

স্ট্যান্ডার্ড জাভা <8

জাভা 8 এর আগে, আপনি একটি সরলডেটফর্ম্যাট এবং java.util.Date ব্যবহার করবেন

String dateTime = "11/15/2013 08:00:00";
// Format for input
SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
// Parsing the date
Date date7 = dateParser.parse(dateTime);
// Format for output
SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy");
// Printing the date
System.out.println(dateFormatter.format(date7));

7
দুঃখিত, তবে আমি জোডাটাইমের তারিখটাইমফর্ম্যাটরটি খুঁজছি।
— iCodeLikeImDrunk

1
@ আইওজিয়াং জোদা একই বিন্যাসের স্ট্রিং সিনট্যাক্স ব্যবহার করে SimpleDateFormat। এপিআই ডকুমেন্টেশন পড়ুন।
— জেস্পার

@ আয়াজিয়াং যেমন জেস্পার উল্লেখ করেছেন, জোদা একই বিন্যাসের স্ট্রিং ব্যবহার করে, যদিও এর আরও বিকল্প রয়েছে। আমি জোডাকে অন্তর্ভুক্ত করার উদাহরণটি প্রসারিত করেছি, আপনি দেখতে পাচ্ছেন এটি খুব একই রকম।
— ডেল্টলিমা

আশ্চর্যের সাথে আমি ডেটটাইমফর্ম্যাটরটি ডিটিএফ = ডেটটাইম ফোরমেট.ফোর্ড প্যাটার্ন ("এমএম / ডিডি / ইয়াই") ব্যবহার করছি; এবং আমি এখনও "মিমি / ডিডি / ইয়ি এইচ: মিমি: এসএস"
— পেয়েছি

2
জোদা-টাইম জাভা.ইটিল.ডেট / ক্যালেন্ডার হিসাবে খুব অনুরূপ ফর্ম্যাটিং কোডগুলি ব্যবহার করে, সূক্ষ্ম পার্থক্যের জন্য ডকটি সাবধানে পড়ুন। তারা অভিন্ন নয়।
— তুলসী বাউরক

45

অন্যান্য উত্তরগুলি সম্পূর্ণ গ্রহণযোগ্য হলেও আমি এটি এখানে যুক্ত করছি adding জোডাটাইমের ডেটটাইমফর্ম্যাটটিতে পূর্বে নির্মিত পার্সার রয়েছে:

dateTime.toString(DateTimeFormat.longDate());

এটি তাদের ফর্ম্যাট দিয়ে মুদ্রিত বেশিরভাগ বিকল্প:

shortDate:         11/3/16
shortDateTime:     11/3/16 4:25 AM
mediumDate:        Nov 3, 2016
mediumDateTime:    Nov 3, 2016 4:25:35 AM
longDate:          November 3, 2016
longDateTime:      November 3, 2016 4:25:35 AM MDT
fullDate:          Thursday, November 3, 2016
fullDateTime:      Thursday, November 3, 2016 4:25:35 AM Mountain Daylight Time

1
ভাল, কোন সংস্করণ এটি চালু করা হয়েছে কোন সংস্করণ?
— মূ

হ্যাঁ আমি পুরোপুরি একমত। দেখে মনে হচ্ছে এটি সবসময়ই রয়েছে। joda-Time.sourceforge.net/apidocs/org/joda/time/format/…
— চাদ বিংহাম


11

আমার মনে হয় আপনি যদি জোডটাইম ব্যবহার করেন তবে এটি কার্যকর হবে:

String strDateTime = "11/15/2013 08:00:00";
DateTime dateTime = DateTime.parse(strDateTime);
DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/YYYY");
String strDateOnly = fmt.print(dateTime);

আমি থেকে এই অংশ পেয়েছিলাম এখানে ।


আপনার ডকুমেন্টেশনের লিঙ্কটি পুরানো। সঠিক ইউআরএল হ'ল: joda.org/joda-time/apidocs/org/joda/time/format/…
— বাসিল

1
@ বাসিলবৌরক যেটি Dবছরের দিনের জন্য তা উল্লেখ করার জন্য আপনাকে ধন্যবাদ , তবে আমার "ডকুমেন্টেশনের লিঙ্ক" পুরানো নয়: আমি যে ডকুমেন্টেশনের সাথে সংযুক্ত হয়েছি তা পুরানো । আমি নিজের প্রয়োজনে ডকুমেন্টেশনের সাথে লিঙ্ক করছি না, আমি পৃষ্ঠাটিতে লিঙ্ক করছি যা থেকে আমার কিছু কোড পেয়েছে — যা পুরানো ডকুমেন্টেশন হিসাবে ঘটে।
— দ্যা

10

আমার কাছে খুব বোবা তবে কাজের বিকল্প রয়েছে। যদি আপনার স্ট্রিং ফুলডেট = "11/15/2013 08:00:00" থাকে;

   String finalDate = fullDate.split(" ")[0];

এটি সহজ এবং দ্রুত কাজ করা উচিত। :)


হ্যাঁ, আমি অবশ্যই চারপাশে ফর্ম্যাটটি পরিবর্তন করব। এটি কেবল এই ক্ষেত্রে কাজ করে।
— iCodeLikeImDrunk

1
সত্যিকারের প্রত্যাশিত আচরণ নয়, এরপরে দুপুর (আপনাকে সহ) যারা আপনার কোড দেখায় আপনি এখানে কী করেছেন কিছুই বুঝতে পারে না ...
— সারকান ওজডেমির

3

আপডেট:

আপনি পারেন: একটি ধ্রুবক তৈরি করতে পারেন:

private static final DateTimeFormatter DATE_FORMATTER_YYYY_MM_DD =
          DateTimeFormat.forPattern("yyyy-MM-dd"); // or whatever pattern that you need.

এই ডেটটাইমফর্ম্যাটটি আমদানি করছে: (এর সাথে সাবধান থাকুন)

আমদানি org.joda.time.format.DateTime Format; org.joda.time.format.DateTime Formatter আমদানি করুন;

এর সাথে তারিখটি পার্স করুন:

DateTime.parse(dateTimeScheduled.toString(), DATE_FORMATTER_YYYY_MM_DD);

পূর্বে:
ডেটটাইম.পারস ("201711201515", ডেটটাইম ফর্ম্যাট.ফোর্ড প্যাটার্ন ("yyyyMMddHHmm"))। টু স্ট্রিং ("yyyyMMdd");

ডেটটাইম চাইলে:

DateTime.parse("201711201515", DateTimeFormat.forPattern("yyyyMMddHHmm")).withTimeAtStartOfDay();

2

এইটা কাজ করে

String x = "22/06/2012";
String y = "25/10/2014";

String datestart = x;
String datestop = y;

//DateTimeFormatter format = DateTimeFormat.forPattern("dd/mm/yyyy");
SimpleDateFormat  format = new SimpleDateFormat("dd/mm/yyyy");

Date d1 = null;
Date d2 = null;

try {
    d1 =  format.parse(datestart);
    d2 = format.parse(datestop);

    DateTime dt1 = new DateTime(d1);
    DateTime dt2 = new DateTime(d2);

    //Period
    period = new Period (dt1,dt2);

    //calculate days
    int days = Days.daysBetween(dt1, dt2).getDays();


} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

1

এটি করার আর একটি উপায় হ'ল:

String date = dateAndTime.substring(0, dateAndTime.indexOf(" "));

আমি ঠিক নিশ্চিত নই, তবে আমি মনে করি এটি .split()পদ্ধতিটি ব্যবহারের চেয়ে দ্রুত / মেমরির কম হতে পারে ।

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