আমি জাভা 8 এর নতুন ডেটটাইম এপিআইয়ের সাথে কাজ করি।
কীভাবে লোকাল ডেটকে তাত্ক্ষণিকভাবে রূপান্তর করবেন? আমি একটি ব্যতিক্রম পেতে
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
এবং আমি বুঝতে পারি না কেন।
আমি জাভা 8 এর নতুন ডেটটাইম এপিআইয়ের সাথে কাজ করি।
কীভাবে লোকাল ডেটকে তাত্ক্ষণিকভাবে রূপান্তর করবেন? আমি একটি ব্যতিক্রম পেতে
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
এবং আমি বুঝতে পারি না কেন।
উত্তর:
Instant
বর্গ সময়-লাইন উপর একটি ক্ষণিক বিন্দু প্রতিনিধিত্ব করে। একটিতে এবং এর থেকে রূপান্তরকরণের LocalDate
জন্য একটি সময়-অঞ্চল প্রয়োজন। অন্য কয়েকটি তারিখ এবং সময় গ্রন্থাগার থেকে ভিন্ন, জেএসআর -310 আপনার জন্য স্বয়ংক্রিয়ভাবে সময়-অঞ্চল নির্বাচন করবে না, তাই আপনাকে অবশ্যই এটি সরবরাহ করতে হবে।
LocalDate date = LocalDate.now();
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();
এই উদাহরণটি ZoneId.systemDefault()
রূপান্তর সম্পাদন করতে - JVM - এর ডিফল্ট সময় অঞ্চল ব্যবহার করে । সম্পর্কিত প্রশ্নের দীর্ঘ উত্তরের জন্য এখানে দেখুন ।
আপডেট: গৃহীত উত্তরটি কেবল গ্রহণ করে LocalDateTime::toInstant(ZoneOffset)
যা ব্যবহার করে ZoneOffset
। এই উত্তরটি ব্যবহারসমূহ LocalDate::atStartOfDay(ZoneId)
যা কোন গ্রহণ ZoneId
। যেমন, এই উত্তরটি সাধারণত আরও কার্যকর (এবং সম্ভবত এটি গ্রহণযোগ্য হওয়া উচিত)।
পুনশ্চ. আমি এপিআই এর প্রধান লেখক ছিল
এটিকে তাত্ক্ষণিক রূপান্তর করতে আপনার লোকালডেটটাইম উদাহরণ থাকতে হবে, যেমন:
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)
LocalDate
সময় অন্তর্ভুক্ত করে না।