জাভা তারিখ বিন্যাস - অতিরিক্ত অক্ষর সহ


88

জাভাতে পিএইচপি তারিখ () স্টাইল বিন্যাসের সমতুল্য কি? আমার অর্থ, পিএইচপি-তে আমি অক্ষরের সাথে আক্ষরিক আচরণ করতে ব্যাকস্ল্যাশ-পলায়ন করতে পারি। অর্থাৎ হ্যাঁ \ y \ e \ a \ r হয়ে উঠবে 2010 বছর । আমি জাভাতে তেমন কিছু খুঁজে পাইনি, সমস্ত উদাহরণ কেবল বিল্ট-ইন তারিখের ফর্ম্যাটগুলির সাথে ডিল করে।

বিশেষ করে, আমি সাথে মোকাবিলা JCalendar তারিখ পিকার্স এবং তাদের dateFormatString সম্পত্তি।

আমার এটি দরকার কারণ আমার লোকালে এটি d এর মতো তারিখের ফর্ম্যাটে সমস্ত ধরণের অতিরিক্ত স্টাফ লেখার প্রয়োজন। (দিনের জন্য) দিনের অংশ পরে, এম। (বছরের পর বছর) বছর পরে অংশ এবং এইভাবে। সবচেয়ে খারাপ ক্ষেত্রে আমি স্ট্রিং প্রতিস্থাপন বা regexp ব্যবহার করতে পারে কিন্তু সম্ভবত একটি সহজ উপায় আছে? আগাম ধন্যবাদ!


4
যে কেউ 2019 বা এর পরে এটি পড়ছেন, SimpleDateFormatউত্তরগুলির কয়েকটিতে ব্যবহৃত ক্লাসটি কুখ্যাত এবং দীর্ঘস্থায়ী। এটা এড়ানোর. পরিবর্তে মার্ক জেরোনিমাস জাভা.টাইম, আধুনিক জাভা তারিখ এবং সময় এপিআইয়ের ব্যবহার প্রদর্শন করে সংক্ষিপ্ত উত্তরটি ব্যবহার করুন
ওলে ভিভি

উত্তর:


165

অবশ্যই, সিম্পলডেট ফরমেটের সাহায্যে আপনি আক্ষরিক স্ট্রিংগুলি অন্তর্ভুক্ত করতে পারেন:

তারিখ এবং সময়ের প্যাটার্নের স্ট্রিংয়ের মধ্যে, 'এ' থেকে 'জেড' এবং 'এ' থেকে 'জেড' থেকে অব্যক্ত বর্ণগুলি তারিখ বা সময়ের স্ট্রিংয়ের উপাদানগুলি উপস্থাপন করে এমন প্যাটার্ন অক্ষর হিসাবে ব্যাখ্যা করা হয়। ব্যাখ্যা এড়াতে পাঠ্যকে একক উদ্ধৃতি (') ব্যবহার করে উদ্ধৃত করা যেতে পারে। "''" একক উদ্ধৃতি উপস্থাপন করে। অন্য সমস্ত চরিত্র ব্যাখ্যা করা হয় না; এগুলি কেবল ফর্ম্যাট করার সময় আউটপুট স্ট্রিংয়ে অনুলিপি করা হয় বা পার্সিংয়ের সময় ইনপুট স্ট্রিংয়ের সাথে মিলে যায়।

 "hh 'o''clock' a, zzzz"    12 o'clock PM, Pacific Daylight Time

সুপার, ঠিক আমার যা প্রয়োজন তা ঠিক করে দেয়। আশ্চর্যজনকভাবে আমি ওয়েবে ব্রাউজ করা অসংখ্য উদাহরণের মধ্যে এত সহজ জিনিস খুঁজে পাইনি :) অনেক অনেক ধন্যবাদ!
সেজানুস

4
আমি কীভাবে উদ্ধৃতি চরিত্রটি এড়াতে পারি? আমি মিমি ফর্ম্যাটটি দিয়ে কিছু করার চেষ্টা করছি। 46 মিনিটের মতো 46 মিনিটের জন্য উদাহরণস্বরূপ।
সট্টি

4
@Sotti: 46''। প্রথম পালাতে দ্বিতীয়।
থিলো

4
অবগতির জন্য, যেমন ভয়ঙ্কর বিরক্তিজনক তারিখ-সময় শ্রেণীর java.util.Date, java.util.Calendarএবং java.text.SimpleDateFormatএখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 এবং পরে পাতাটা ক্লাস।
বেসিল বাউরক



6

java.time

মার্ক জেরোনিমাস এটি ইতিমধ্যে বলেছিলেন । আমি এটিকে আরও খানিকটা বাহির করছি। কেবল পাঠ্যটি একক উদ্ধৃতিতে আক্ষরিকভাবে মুদ্রণের জন্য রেখে দিন।

    DateTimeFormatter yearFormatter = DateTimeFormatter.ofPattern("yyyy 'year'");
    System.out.println(LocalDate.of(2010, Month.FEBRUARY, 3).format(yearFormatter));
    System.out.println(Year.of(2010).format(yearFormatter));
    System.out.println(ZonedDateTime.now(ZoneId.of("Europe/Vilnius")).format(yearFormatter));

এখনই চলমান অবস্থায় আউটপুট:

2010 year
2010 year
2019 year

আপনি যদি একটি DateTimeFormatterBuilderএবং এর appendPatternপদ্ধতি ব্যবহার করে থাকেন তবে একইভাবে একক উদ্ধৃতি ব্যবহার করুন। অথবা appendLiteralপরিবর্তে এর পদ্ধতিটি ব্যবহার করুন এবং কোনও একক উদ্ধৃতি নেই।

তাহলে আমরা কীভাবে বিন্যাসে একক উদ্ধৃতি রাখি? দুটি একক উদ্ধৃতি এক উত্পাদন। ডাবল একক উদ্ধৃতি একক উদ্ধৃতিগুলির মধ্যে রয়েছে কিনা তা বিবেচ্য নয়:

    DateTimeFormatter formatterWithSingleQuote = DateTimeFormatter.ofPattern("H mm'' ss\"");
    System.out.println(LocalTime.now(ZoneId.of("Europe/London")).format(formatterWithSingleQuote));

10 28 '34 "

    DateTimeFormatter formatterWithSingleQuoteInsideSingleQuotes
            = DateTimeFormatter.ofPattern("hh 'o''clock' a, zzzz", Locale.ENGLISH);
    System.out.println(ZonedDateTime.now(ZoneId.of("America/Los_Angeles"))
            .format(formatterWithSingleQuoteInsideSingleQuotes));

02 টা এএম, প্রশান্ত মহাসাগরীয় দিবালোকের সময়

উপরের সমস্ত ফর্ম্যাটরগুলি পার্সিংয়ের জন্যও ব্যবহার করা যেতে পারে। উদাহরণ স্বরূপ:

    LocalTime time = LocalTime.parse("16 43' 56\"", formatterWithSingleQuote);
    System.out.println(time);

16:43:56

SimpleDateFormatসময় ব্যবহৃত এই প্রশ্নের প্রায় 10 বছর আগে জিজ্ঞেস করা হয়েছিল বর্গ কুখ্যাতিপূর্ণভাবে বিরক্তিজনক এবং দীর্ঘ পুরানো হয়েছে। আমি প্রস্তাব দিচ্ছি যে পরিবর্তে আপনি জাভা.টাইম, আধুনিক জাভা তারিখ এবং সময় এপিআই ব্যবহার করুন। যে কারণে আমি ঠিক যে প্রদর্শিত।

লিঙ্কগুলি


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