TL; ড
LocalDate.of( 1985 , 1 , 1 )
... অথবা ...
LocalDate.of( 1985 , Month.JANUARY , 1 )
বিস্তারিত
java.util.Date
, java.util.Calendar
, এবং java.text.SimpleDateFormat
ক্লাস খুব দ্রুত ছুটে যখন জাভা প্রথম চালু হয় এবং প্রসূত হয়েছে। ক্লাসগুলি ভালভাবে ডিজাইন বা প্রয়োগ করা হয়নি। উন্নতির চেষ্টা করা হয়েছিল, এভাবে আপনি খুঁজে পেয়েছেন হ্রাস। দুর্ভাগ্যক্রমে উন্নতির প্রচেষ্টা ব্যর্থ হয়েছে। আপনার এই ক্লাসগুলি পুরোপুরি এড়ানো উচিত । এগুলি নতুন ক্লাস দ্বারা জাভা 8 এ সরবরাহ করা হয়েছে।
আপনার কোডে সমস্যা
একটি java.util.Date একটি তারিখ এবং একটি সময় অংশ উভয় আছে। আপনি আপনার কোডের সময়ের অংশটিকে উপেক্ষা করেছেন। সুতরাং তারিখ শ্রেণিটি আপনার জেভিএমের ডিফল্ট সময় অঞ্চল দ্বারা নির্ধারিত দিনের শুরুতে সময় গ্রহণ করবে এবং তারিখের অবজেক্টে সেই সময়টিকে প্রয়োগ করবে। সুতরাং আপনার কোডের ফলাফলগুলি কোন মেশিনটি চালায় বা কোন সময় অঞ্চল সেট করা আছে তার উপর নির্ভরশীল will সম্ভবত আপনি যা চান তা নয়।
আপনি যদি জন্মের তারিখের মতো সময়ের অংশ ব্যতীত ঠিক তারিখটি চান তবে আপনি কোনও Date
অবজেক্টটি ব্যবহার করতে নাও চান । আপনি তারিখের কেবল একটি স্ট্রিং আইএসও 8601 ফর্ম্যাটে সংরক্ষণ করতে পারেন YYYY-MM-DD
। অথবা LocalDate
জোদা-সময় থেকে কোনও বস্তু ব্যবহার করুন (নীচে দেখুন)।
Joda-টাইম
জাভাতে প্রথমে শিখতে হবে: জাভা ইউটিਲ.ডেট এবং জাভা.ইটিল.ক্যাল্যাভার ক্লাস জাভা দিয়ে বান্ডিল করা এড়িয়ে চলুন ।
ব্যবহারকারী 3277382 এর উত্তরে সঠিকভাবে উল্লিখিত হিসাবে , জাডা -টাইম বা জাভা টাইমে নতুন জাভা.টাইম। * প্যাকেজটি ব্যবহার করুন ।
জোদা-সময় উদাহরণ কোড 2.3
DateTimeZone timeZoneNorway = DateTimeZone.forID( "Europe/Oslo" );
DateTime birthDateTime_InNorway = new DateTime( 1985, 1, 1, 3, 2, 1, timeZoneNorway );
DateTimeZone timeZoneNewYork = DateTimeZone.forID( "America/New_York" );
DateTime birthDateTime_InNewYork = birthDateTime_InNorway.toDateTime( timeZoneNewYork );
DateTime birthDateTime_UtcGmt = birthDateTime_InNorway.toDateTime( DateTimeZone.UTC );
LocalDate birthDate = new LocalDate( 1985, 1, 1 );
কনসোল করতে ডাম্প ...
System.out.println( "birthDateTime_InNorway: " + birthDateTime_InNorway );
System.out.println( "birthDateTime_InNewYork: " + birthDateTime_InNewYork );
System.out.println( "birthDateTime_UtcGmt: " + birthDateTime_UtcGmt );
System.out.println( "birthDate: " + birthDate );
যখন চালানো…
birthDateTime_InNorway: 1985-01-01T03:02:01.000+01:00
birthDateTime_InNewYork: 1984-12-31T21:02:01.000-05:00
birthDateTime_UtcGmt: 1985-01-01T02:02:01.000Z
birthDate: 1985-01-01
java.time
এই ক্ষেত্রে জাভা.টাইমের কোড কোডটি জোদা-টাইমের সাথে প্রায় একই রকম ।
আমরা একটি সময় অঞ্চল ( ZoneId
) পাই এবং সেই সময় অঞ্চলে ( ZonedDateTime
) নির্ধারিত একটি তারিখ-সময় অবজেক্টটি তৈরি করি । তারপরে অপরিবর্তনীয় অবজেক্টস প্যাটার্নটি ব্যবহার করে , আমরা পুরানো অবজেক্টের একই তাত্ক্ষণিকতার (নতুন যুগের পরে ন্যানোসেকেন্ডের গণনা ) উপর ভিত্তি করে নতুন তারিখ-সময় তৈরি করি তবে অন্য সময় অঞ্চল নির্ধারিত। শেষ অবধি আমরা এমন একটি LocalDate
সময় পাই যা দিনের কোন সময় বা সময় অঞ্চল নেই যদিও লক্ষ্য নির্ধারণের সময় সময় অঞ্চলটি প্রযোজ্য তা লক্ষ্য করুন ( উদাহরণস্বরূপ নিউ ইয়র্কের চেয়ে ওসলোতে একটি নতুন দিন শুরুর আগে )।
ZoneId zoneId_Norway = ZoneId.of( "Europe/Oslo" );
ZonedDateTime zdt_Norway = ZonedDateTime.of( 1985 , 1 , 1 , 3 , 2 , 1 , 0 , zoneId_Norway );
ZoneId zoneId_NewYork = ZonedId.of( "America/New_York" );
ZonedDateTime zdt_NewYork = zdt_Norway.withZoneSameInstant( zoneId_NewYork );
ZonedDateTime zdt_Utc = zdt_Norway.withZoneSameInstant( ZoneOffset.UTC ); // Or, next line is similar.
Instant instant = zdt_Norway.toInstant(); // Instant is always in UTC.
LocalDate localDate_Norway = zdt_Norway.toLocalDate();
জাভা.টাইম সম্পর্কে
Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই ক্লাসগুলি , & , এর মতো সমস্যাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময়ের ক্লাসগুলিকে সহায়তা করে ।java.util.Date
Calendar
SimpleDateFormat
Joda-টাইম প্রকল্প, এখন রক্ষণাবেক্ষণ মোড , মাইগ্রেশনে উপদেশ java.time ক্লাস।
আরও জানতে, ওরাকল টিউটোরিয়াল দেখুন । এবং অনেক উদাহরণ এবং ব্যাখ্যার জন্য স্ট্যাক ওভারফ্লো অনুসন্ধান করুন। স্পেসিফিকেশনটি জেএসআর 310 ।
আপনি আপনার ডাটাবেসের সাথে জাভা.টাইম অবজেক্টগুলি সরাসরি বিনিময় করতে পারেন । জেডিবিসি ৪.২ বা তারপরের সাথে অনুগত একটি জেডিবিসি ড্রাইভার ব্যবহার করুন । স্ট্রিংগুলির দরকার নেই, ক্লাসের প্রয়োজন নেই ।java.sql.*
জাভা.টাইম ক্লাস কোথায় পাবেন?
ThreeTen-অতিরিক্ত প্রকল্প অতিরিক্ত শ্রেণীর সাথে java.time প্রসারিত করে। এই প্রকল্পটি জাভা.টাইমে সম্ভাব্য ভবিষ্যতের সংযোজনগুলির একটি প্রমাণযোগ্য ক্ষেত্র। আপনি এখানে কিছু দরকারী শ্রেণীর যেমন খুঁজে পেতে পারেন Interval
, YearWeek
, YearQuarter
, এবং আরো ।