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


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.