স্ট্রিং টু লোকালডেট


105

আমি কীভাবে একটি স্ট্রিং এ এ রূপান্তর করতে পারি LocalDate?

আমি উদাহরণগুলি দেখেছি যেমন:

LocalDate dt = new LocalDate("2005-11-12");

তবে আমার স্ট্রিংগুলি এর মতো:

2005-nov-12

উত্তর:


79

আপনি জোদা সময় ব্যবহার করার সময়, আপনার ব্যবহার করা উচিত DateTimeFormatter:

final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);

যদি জাভা 8 বা তার বেশি ব্যবহার করে থাকেন তবে হার্টজির উত্তরটি দেখুন


"Yyyy-MMM-dd" বিন্যাসের জন্য একটি সম্পাদনাও জমা দিয়েছেন। YYYY যুগের বছর, এবং (আরও উদ্বেগজনকভাবে) ডিডি বছরের বছর।
স্প্যান্সার Kormos

উত্তরটি কিছুটা ভুল j অন্য কথায়, ডেটটাইমফর্ম্যাট.ফট প্যাটার্ন ("yyyy-MM-dd") কল করুন p
ড্যান হেইউড

192

java.time

জাভা ১.৮ থেকে আপনি জাভা.টাইম ক্লাস ব্যবহার করে অতিরিক্ত পাঠাগার ছাড়াই এটি অর্জন করতে পারেন । টিউটোরিয়াল দেখুন ।

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
formatter = formatter.withLocale( putAppropriateLocaleHere );  // Locale specifies human language for translating, and cultural norms for lowercase/uppercase and abbreviations and such. Example: Locale.US or Locale.CANADA_FRENCH
LocalDate date = LocalDate.parse("2005-nov-12", formatter);

সিনট্যাক্স যদিও প্রায় একই।


java.time.format.DateTimeParseEcepception: পাঠ্য '2005-nov-12' সূচী 5 তে বিশ্লেষণ করা যায়নি
Atte Juvonen

4
এটি ঘটে কারণ আপনার ডিফল্ট লোকেল প্রত্যাশা করে যে 'নভেম্বরের' এন 'আপার কেস হবে।
হার্টজি

এই পদ্ধতির আরও আলোচনার জন্য আমার অনুরূপ প্রশ্নের উত্তর দেখুন ।
বাসিল বাউরক

14

আপনাকে ডেটটাইম থেকে লোকালডেটে যেতে হতে পারে।

জোদা সময় ব্যবহার:

DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MMM-dd");
DateTime dateTime = FORMATTER.parseDateTime("2005-nov-12");
LocalDate localDate = dateTime.toLocalDate();

4
নোট করুন যে এই উত্তরটি জাডাকে বোঝায়, জাভা এসই নয়।
ডেভিডএস

9

ডেটটাইম ফর্ম্যাটিং দ্বারা সম্পাদিত হয় org.joda.time.format.DateTimeFormatter class। তিনটি ক্লাস বিন্যাস তৈরি করতে কারখানার পদ্ধতি সরবরাহ করে এবং এটি একটি। অন্যরা হলেন ISODateTimeFormatএবং DateTimeFormatterBuilder

DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MMM-dd");
LocalDate lDate = new LocalDate().parse("2005-nov-12",format);

final org.joda.time.LocalDate classএকটি অপরিবর্তনীয় ডেটটাইম ক্লাস যা সময় অঞ্চল ছাড়া কোনও তারিখের প্রতিনিধিত্ব করে । LocalDateহয় থ্রেড-নিরাপদ এবং অপরিবর্তনীয় যে, প্রদত্ত সারণী হিসাবে ভাল। সরবরাহিত সমস্ত স্ট্যান্ডার্ড ক্রোনোলজি ক্লাসগুলি থ্রেড-নিরাপদ এবং অপরিবর্তনীয়।


1

DateTimeFormatter অন্তর্নির্মিত ফর্ম্যাটগুলি রয়েছে যা একটি অক্ষর ক্রম পার্স করার জন্য সরাসরি ব্যবহার করা যেতে পারে। এটি সংবেদনশীল ক্ষেত্রে, নভেম্বরে নতুন এবং এনওভের কাজ করবে না:

DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MMM-dd");

try {
    LocalDate datetime = LocalDate.parse(oldDate, pattern);
    System.out.println(datetime); 
} catch (DateTimeParseException e) {
    // DateTimeParseException - Text '2019-nov-12' could not be parsed at index 5
    // Exception handling message/mechanism/logging as per company standard
}

DateTimeFormatterBuilderএকটি ফরম্যাটার তৈরির কাস্টম উপায় সরবরাহ করে। এটি কেস সংবেদনশীল, নভেম্বর, নভে এবং এনওভিকে একই হিসাবে বিবেচনা করা হবে।

DateTimeFormatter f = new DateTimeFormatterBuilder().parseCaseInsensitive()
        .append(DateTimeFormatter.ofPattern("yyyy-MMM-dd")).toFormatter();
try {
    LocalDate datetime = LocalDate.parse(oldDate, f);
    System.out.println(datetime); // 2019-11-12
} catch (DateTimeParseException e) {
     // Exception handling message/mechanism/logging as per company standard
}

4
তাই আপনাকে স্বাগতম, আমরা আপনার ইনপুট প্রশংসা করি! দয়া করে আপনার উত্তরটি সম্পাদনা করুন এবং আরও কিছু ব্যাখ্যা সরবরাহ করুন, এটি প্রশ্নের সাথে কীভাবে সম্পর্কিত, আপনি কোথায় থেকে সমাধান পেয়েছেন, কেন কাজ করে? আরও দিকনির্দেশের জন্য stackoverflow.com/help/how-to-answer দেখুন
বি - রিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.