TL; ড
myJavaUtilDate // The terrible `java.util.Date` class is now legacy. Use *java.time* instead.
.toInstant() // Convert this moment in UTC from the legacy class `Date` to the modern class `Instant`.
.atZone( ZoneId.of( "Africa/Tunis" ) ) // Adjust from UTC to the wall-clock time used by the people of a particular region (a time zone).
.toLocalDate() // Extract the date-only portion.
.atStartOfDay( ZoneId.of( "Africa/Tunis" ) ) // Determine the first moment of that date in that zone. The day does *not* always start at 00:00:00.
java.time
আপনি জেএসআর 310 এ সংজ্ঞায়িত আধুনিক জাভা.টাইম ক্লাসগুলি দ্বারা বছর পূর্বে ভয়ানক পুরানো তারিখের সময় ক্লাসগুলি ব্যবহার করছেন ।
Date
➙ Instant
একটি java.util.Date
ইউটিসিতে একটি মুহুর্ত উপস্থাপন করে। এর প্রতিস্থাপন হয় Instant
। পুরানো ক্লাসগুলিতে যুক্ত হওয়া নতুন রূপান্তর পদ্ধতিগুলিকে কল করুন।
Instant instant = myJavaUtilDate.toInstant() ;
সময় অঞ্চল
যে সময় অঞ্চলটি আপনি নিজের নতুন সময়ের কথাটি বোঝাতে চান তা উল্লেখ করুন।
একটি নির্দিষ্ট করুন সঠিক সময় অঞ্চল নাম এর বিন্যাসে Continent/Region
যেমন America/Montreal
, Africa/Casablanca
অথবা Pacific/Auckland
। কখনও যেমন 2-4 চিঠি সংক্ষেপ ব্যবহার EST
বা IST
হিসাবে তারা না সত্য সময় অঞ্চল, না মান, এবং এমনকি অনন্য নয় (!)।
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime
প্রয়োগ ZoneId
করার জন্য Instant
একটি পেতে ZonedDateTime
। একই মুহুর্ত, সময়রেখায় একই পয়েন্ট, তবে বিভিন্ন দেয়াল-ঘড়ির সময়।
ZonedDateTime zdt = instant.atZone( z ) ;
দিনের পরিবর্তিত হচ্ছে
আপনি দিনের সময় পরিবর্তন করতে বলেছেন। LocalTime
দিনের সমস্ত সময়ের অংশগুলি পরিবর্তন করতে একটি প্রয়োগ করুন : ঘন্টা, মিনিট, সেকেন্ড, ভগ্নাংশ দ্বিতীয়। ZonedDateTime
মূলটির উপর ভিত্তি করে মানগুলি সহ একটি নতুন ইনস্ট্যান্ট হয়। Java.time শ্রেণীর এই ব্যবহার অপরিবর্তনীয় বস্তু প্যাটার্ন প্রদান থ্রেড-নিরাপত্তা ।
LocalTime lt = LocalTime.of( 15 , 30 ) ; // 3:30 PM.
ZonedDateTime zdtAtThreeThirty = zdt.with( lt ) ;
দিনের প্রথম মুহূর্ত
তবে আপনি বিশেষভাবে 00:00 এর জন্য জিজ্ঞাসা করেছিলেন। সুতরাং আপাতদৃষ্টিতে আপনি দিনের প্রথম মুহূর্তটি চান। সাবধান: কিছু জোনে কিছু দিন 00:00:00 এ শুরু হয় না। তারা অন্য সময়ে শুরু হতে পারে যেমন ডাইলাইট সেভিং টাইম (ডিএসটি) এর মতো অসঙ্গতিগুলির কারণে 01:00:00।
জাভা.টাইম প্রথম মুহুর্তটি নির্ধারণ করুক । কেবলমাত্র তারিখের অংশটি বের করুন। তারপরে প্রথম মুহুর্তটি পেতে সময় অঞ্চলটি পাস করুন।
LocalDate ld = zdt.toLocalDate() ;
ZonedDateTime zdtFirstMomentOfDay = ld.atStartOfDay( z ) ;
ইউটিসিতে সামঞ্জস্য করুন
আপনার যদি ইউটিসি-তে ফিরে যেতে হয় তবে একটিটি বের করুন Instant
।
Instant instant = zdtFirstMomentOfDay.toInstant() ;
Instant
➙ Date
আপনার যদি java.util.Date
পুরানো কোডটি এখনও জাভা.টাইমে আপডেট না করে ইন্টারঅ্যাপের প্রয়োজন হয় তবে রূপান্তর করুন।
java.util.Date d = java.util.Date.from( instant ) ;