Joda-টাইম
নির্ভরতা যুক্ত করার ক্ষেত্রে, আমি ভয় করি java.util. তারিখ এবং .ক্যালেন্ডারটি সত্যিই এত খারাপ যে কোনও নতুন প্রকল্পে আমি প্রথম কাজটি জোদা-টাইম লাইব্রেরি যুক্ত করি। জাভা 8-এ আপনি জোদা-টাইম দ্বারা অনুপ্রাণিত নতুন java.Time প্যাকেজটি ব্যবহার করতে পারেন।
জোদা-সময়ের মূলটি DateTime
ক্লাস। Java.util. তারিখের বিপরীতে, এটি নির্ধারিত সময় অঞ্চল ( DateTimeZone
) বোঝে । জুডেট থেকে রূপান্তর করার সময়, একটি অঞ্চল নির্ধারণ করুন।
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime dateTimeQuébec = new DateTime( date , zone );
LocalDate
একই তারিখে দুই তারিখ-সময় অবতরণ করে কিনা তা যাচাই করার একটি উপায় LocalDate
objects
এই রূপান্তরটি নির্ধারিত সময় অঞ্চলটির উপর নির্ভর করে। তুলনা করতেLocalDate
বস্তুর করতে, তাদের অবশ্যই একই অঞ্চলে রূপান্তর করা উচিত।
এখানে একটি সামান্য ইউটিলিটি পদ্ধতি।
static public Boolean sameDate ( DateTime dt1 , DateTime dt2 )
{
LocalDate ld1 = new LocalDate( dt1 );
// LocalDate determination depends on the time zone.
// So be sure the date-time values are adjusted to the same time zone.
LocalDate ld2 = new LocalDate( dt2.withZone( dt1.getZone() ) );
Boolean match = ld1.equals( ld2 );
return match;
}
প্রথম ডেটটাইম অবজেক্টের সময় অঞ্চলটি ব্যবহার করা উচিত বলে ধরে নেওয়ার চেয়ে সময় অঞ্চল নির্দিষ্ট করে আরও ভাল যুক্তি হতে পারে।
static public Boolean sameDate ( DateTimeZone zone , DateTime dt1 , DateTime dt2 )
{
LocalDate ld1 = new LocalDate( dt1.withZone( zone ) );
// LocalDate determination depends on the time zone.
// So be sure the date-time values are adjusted to the same time zone.
LocalDate ld2 = new LocalDate( dt2.withZone( zone ) );
return ld1.equals( ld2 );
}
স্ট্রিং প্রতিনিধিত্ব
আর একটি পদ্ধতি হ'ল প্রতিটি তারিখের তারিখের অংশের স্ট্রিং উপস্থাপনা তৈরি করা, তারপরে স্ট্রিংগুলির তুলনা করুন।
আবার, নির্ধারিত সময় অঞ্চলটি গুরুত্বপূর্ণ।
DateTimeFormatter formatter = ISODateTimeFormat.date(); // Static method.
String s1 = formatter.print( dateTime1 );
String s2 = formatter.print( dateTime2.withZone( dt1.getZone() ) );
Boolean match = s1.equals( s2 );
return match;
সময় বিঘত
সাধারণ সমাধানটি হ'ল কিছু সময়ের জন্য সংজ্ঞা দেওয়া হয়, তারপরে জিজ্ঞাসা করুন স্প্যানটিতে আপনার লক্ষ্য রয়েছে কি না। এই উদাহরণ কোডটি জোদা-সময় ২.৪ এ রয়েছে। মনে রাখবেন যে "মধ্যরাত্রি" সম্পর্কিত ক্লাসগুলি হ্রাস করা হয়েছে। পরিবর্তে withTimeAtStartOfDay
পদ্ধতিটি ব্যবহার করুন । ব্যবধান, সময়কাল এবং সময়কাল: জোদা-টাইম বিভিন্ন উপায়ে সময়কাল উপস্থাপনের জন্য তিনটি শ্রেণি সরবরাহ করে।
"হাফ-ওপেন" পদ্ধতির ব্যবহার যেখানে স্প্যানের শুরুটি অন্তর্ভুক্ত এবং সমাপ্তি একচেটিয়া।
লক্ষ্যটির সময় অঞ্চল ব্যবধানের সময় জোনের চেয়ে আলাদা হতে পারে।
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime target = new DateTime( 2012, 3, 4, 5, 6, 7, timeZone );
DateTime start = DateTime.now( timeZone ).withTimeAtStartOfDay();
DateTime stop = start.plusDays( 1 ).withTimeAtStartOfDay();
Interval interval = new Interval( start, stop );
boolean containsTarget = interval.contains( target );
java.time
জাভা 8 এবং পরে জাভা.টাইম ফ্রেমওয়ার্ক সহ আসে । জোদা-টাইম দ্বারা অনুপ্রাণিত, জেএসআর 310 দ্বারা সংজ্ঞায়িত এবং থ্রিটেন-এক্সট্রা প্রকল্প দ্বারা প্রসারিত। টিউটোরিয়াল দেখুন ।
জোদা-সময়ের নির্মাতারা আমাদের সকলকে জাভা.টাইমে যাওয়ার সুবিধার্থে যত তাড়াতাড়ি চলে যেতে নির্দেশ দিয়েছেন। ইতিমধ্যে জোদা-টাইম সক্রিয়ভাবে রক্ষণাবেক্ষণ করা প্রকল্প হিসাবে চালিয়ে যাচ্ছে। তবে ভবিষ্যতের কাজ জোদা-টাইমের পরিবর্তে কেবল জাভা.টাইম এবং থ্রিটেন-এক্সট্রাতে হবে বলে আশা করি।
সংক্ষেপে জাভা.টাইম সংক্ষিপ্তসার জন্য… Instant
ইউটিসি-র সময়রেখার একটি মুহুর্ত। ZoneId
একটি ZonedDateTime
অবজেক্ট পেতে একটি সময় অঞ্চল ( ) প্রয়োগ করুন । একটি তারিখ-সময় অস্পষ্ট অনির্দিষ্ট ধারণা পেতে টাইমলাইনে বন্ধ সরাতে,, "স্থানীয়" ক্লাস ব্যবহার করুন: LocalDateTime
, LocalDate
, LocalTime
।
এই উত্তরের জোদা-সময় বিভাগে আলোচনা করা যুক্তিটি জাভা.টাইমের ক্ষেত্রে প্রযোজ্য।
পুরানো java.util.Date বর্গের toInstant
জাভা.টাইমে রূপান্তর করার জন্য একটি নতুন পদ্ধতি রয়েছে।
Instant instant = yourJavaUtilDate.toInstant(); // Convert into java.time type.
তারিখ নির্ধারণের জন্য একটি সময় অঞ্চল প্রয়োজন।
ZoneId zoneId = ZoneId.of( "America/Montreal" );
আমরা যে সময় অঞ্চল বস্তুর প্রয়োগ Instant
একটি প্রাপ্ত ZonedDateTime
। সেই থেকে আমরা একটি তারিখ-কেবল মানটি বের করি (ক LocalDate
) যেহেতু আমাদের লক্ষ্য তারিখগুলি (ঘন্টা, মিনিট, ইত্যাদি নয়) তুলনা করা।
ZonedDateTime zdt1 = ZonedDateTime.ofInstant( instant , zoneId );
LocalDate localDate1 = LocalDate.from( zdt1 );
java.util.Date
তুলনার জন্য আমাদের প্রয়োজন দ্বিতীয় বস্তুর সাথে একই করুন । আমি পরিবর্তে বর্তমান মুহূর্তটি ব্যবহার করব।
ZonedDateTime zdt2 = ZonedDateTime.now( zoneId );
LocalDate localDate2 = LocalDate.from( zdt2 );
isEqual
একই তারিখের মান পরীক্ষা করার জন্য বিশেষ পদ্ধতিটি ব্যবহার করুন ।
Boolean sameDate = localDate1.isEqual( localDate2 );