TL; ড
আপনার অপ্রচলিত java.util.Date
বস্তুগুলিকে তাদের প্রতিস্থাপনে রূপান্তর করুন java.time.Instant
,। তারপরে অতিক্রান্ত সময়টিকে ক হিসাবে গণনা করুন Duration
।
Duration d =
Duration.between( // Calculate the span of time between two moments as a number of hours, minutes, and seconds.
myJavaUtilDate.toInstant() , // Convert legacy class to modern class by calling new method added to the old class.
Instant.now() // Capture the current moment in UTC. About two and a half hours later in this example.
)
;
d.toString (): PT2H34M56S
d.toMinutes (): 154
d.toMinutesPart (): 34
আইএসও 8601 ফর্ম্যাট: PnYnMnDTnHnMnS
যুক্তিসম্মত মান আইএসও 8601 সংজ্ঞায়িত বছর নম্বর হিসাবে একটি সময় বিঘত একটি সংক্ষিপ্ত পাঠগত উপস্থাপনা, মাস, দিন, ঘন্টা, ইত্যাদি মান কল যেমন যেমন একটি স্প্যান একটি সময়কাল । বিন্যাসটি PnYnMnDTnHnMnS
যেখানে P
"পিরিয়ড" এর অর্থ,T
সময় অংশ থেকে তারিখের অংশটি পৃথক করে এবং এর মধ্যে সংখ্যার পরে একটি বর্ণ থাকে।
উদাহরণ:
P3Y6M4DT12H30M5S
তিন বছর, ছয় মাস, চার দিন, বারো ঘন্টা, ত্রিশ মিনিট এবং পাঁচ সেকেন্ড
PT4H30M
সাড়ে চার ঘন্টা
java.time
Java.time জাভা 8 পাতাটা এবং পরে ফ্রেমওয়ার্ক বিরক্তিজনক পুরাতন supplants java.util.Date
/ java.util.Calendar
ক্লাস। নতুন ক্লাসগুলি অত্যন্ত সফল জোডা-টাইম কাঠামোর দ্বারা অনুপ্রাণিত হয়েছে , এর উত্তরসূরি হিসাবে ধারণা করা হয়েছে, ধারণার অনুরূপ তবে পুনরায় আর্কিটেটেড। জেএসআর 310 দ্বারা সংজ্ঞায়িত । থ্রিটেন-এক্সট্রা প্রকল্প দ্বারা প্রসারিত । টিউটোরিয়াল দেখুন ।
মুহূর্ত
Instant
ক্লাসে টাইমলাইনে একটি মুহূর্ত প্রতিনিধিত্ব করে ইউটিসি একটি রেজোলিউশনে ন্যানোসেকেন্ড (একসঙ্গে নয় জন (9) একটি দশমিক ভগ্নাংশের সংখ্যায় পর্যবসিত)।
Instant instant = Instant.now() ; // Capture current moment in UTC.
শ্রেষ্ঠ যেমন উত্তরাধিকার শ্রেণীর এড়াতে Date
/ Calendar
। তবে আপনাকে যদি পুরানো কোডটি এখনও জাভা.টাইমে আপডেট না করে আন্তঃচালিত করতে হয় তবে পিছনে পিছনে রূপান্তর করুন। পুরানো ক্লাসে যুক্ত নতুন রূপান্তর পদ্ধতিগুলি কল করুন। একটি থেকে সরানোর জন্য java.util.Date
একটি থেকে Instant
, কল Date::toInstant
।
Instant instant = myJavaUtilDate.toInstant() ; // Convert from legacy `java.util.Date` class to modern `java.time.Instant` class.
সময় বিঘত
জাভা.টাইম ক্লাসগুলি কয়েক বছর, মাস, দিন, ঘন্টা, মিনিট, সেকেন্ড হিসাবে সময়ের ব্যবধানকে এই দুটি ভাগে বিভক্ত করেছে:
এখানে একটি উদাহরণ।
ZoneId zoneId = ZoneId.of ( "America/Montreal" );
ZonedDateTime now = ZonedDateTime.now ( zoneId );
ZonedDateTime future = now.plusMinutes ( 63 );
Duration duration = Duration.between ( now , future );
কনসোল করতে ডাম্প।
উভয়ই Period
এবং তাদের মানটির একটি স্ট্রিং উপস্থাপনা উত্পন্ন করার জন্য আইএসও 8601 স্ট্যান্ডার্ড Duration
ব্যবহার করে ।
System.out.println ( "now: " + now + " to future: " + now + " = " + duration );
এখন: 2015-11-26T00: 46: 48.016-05: 00 [আমেরিকা / মন্ট্রিল] ভবিষ্যতের: 2015-11-26T00: 46: 48.016-05: 00 [আমেরিকা / মন্ট্রিল] = পিটি 1 এইচ 3 এম
জাভা 9 Duration
দিনের অংশ, ঘন্টা অংশ, মিনিট অংশ এবং সেকেন্ডের অংশ পেতে পদ্ধতি যুক্ত করে ।
আপনি পুরো সময়কালে মোট দিন বা ঘন্টা বা মিনিট বা সেকেন্ড বা মিলিসেকেন্ড বা ন্যানোসেকেন্ডগুলি পেতে পারেন।
long totalHours = duration.toHours();
জাভা 9-এ Duration
ক্লাসটি দিন, ঘন্টা, মিনিট, সেকেন্ড, মিলিসেকেন্ড / ন্যানোসেকেন্ডের বিভিন্ন অংশ ফিরে পাওয়ার জন্য নতুন পদ্ধতি অর্জন করে। ফোন করুন to…Part
পদ্ধতি: toDaysPart()
, toHoursPart()
, এবং তাই।
ChronoUnit
আপনি যদি কেবল সময়ের আরও বৃহত্তর গ্রানুলারিটির বিষয়ে চিন্তা করেন তবে যেমন "সময় কেটে গেছে", ChronoUnit
এনাম ব্যবহার করুন ।
long daysElapsed = ChronoUnit.DAYS.between( earlier , later );
আরেকটি উদাহরণ.
Instant now = Instant.now();
Instant later = now.plus( Duration.ofHours( 2 ) );
…
long minutesElapsed = ChronoUnit.MINUTES.between( now , later );
120
জাভা.টাইম সম্পর্কে
Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই ক্লাসগুলি , & , এর মতো সমস্যাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময়ের ক্লাসগুলিকে সহায়তা করে ।java.util.Date
Calendar
SimpleDateFormat
Joda-টাইম প্রকল্প, এখন রক্ষণাবেক্ষণ মোড , স্থানান্তরণ java.time করার পরামর্শ দেয়।
আরও জানতে, ওরাকল টিউটোরিয়ালটি দেখুন । এবং অনেক উদাহরণ এবং ব্যাখ্যার জন্য স্ট্যাক ওভারফ্লো অনুসন্ধান করুন। স্পেসিফিকেশনটি জেএসআর 310 ।
জাভা.টাইম ক্লাস কোথায় পাবেন?
ThreeTen-অতিরিক্ত প্রকল্প অতিরিক্ত শ্রেণীর সাথে java.time প্রসারিত করে। এই প্রকল্পটি জাভা.টাইমে সম্ভাব্য ভবিষ্যতের সংযোজনগুলির একটি প্রমাণযোগ্য ক্ষেত্র। আপনি এখানে কিছু দরকারী শ্রেণীর যেমন খুঁজে পেতে পারেন Interval
, YearWeek
, YearQuarter
, এবং আরো ।
Joda-টাইম
আপডেট: জোদা-টাইম প্রকল্পটি এখন রক্ষণাবেক্ষণের মোডে রয়েছে , টিমটি জাভা.টাইম ক্লাসগুলিতে মাইগ্রেশনের পরামর্শ দিচ্ছে । ইতিহাসের জন্য আমি এই বিভাগটি অক্ষত রেখেছি।
জোডা-টাইম লাইব্রেরিটি ডিফল্টর জন্য আইএসও 8601 ব্যবহার করে। এর Period
শ্রেণি এই PnYnMnDTnHnMnS স্ট্রিংগুলি বিশ্লেষণ করে এবং উত্পন্ন করে।
DateTime now = DateTime.now(); // Caveat: Ignoring the important issue of time zones.
Period period = new Period( now, now.plusHours( 4 ).plusMinutes( 30));
System.out.println( "period: " + period );
উপস্থাপন করে:
period: PT4H30M