কীভাবে লোকাল ডেটকে তাত্ক্ষণিকভাবে রূপান্তর করবেন?


106

আমি জাভা 8 এর নতুন ডেটটাইম এপিআইয়ের সাথে কাজ করি।

কীভাবে লোকাল ডেটকে তাত্ক্ষণিকভাবে রূপান্তর করবেন? আমি একটি ব্যতিক্রম পেতে

LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);

এবং আমি বুঝতে পারি না কেন।


কারণ একটি LocalDateসময় অন্তর্ভুক্ত করে না।
অরেঞ্জডোগ

উত্তর:


97

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। যেমন, এই উত্তরটি সাধারণত আরও কার্যকর (এবং সম্ভবত এটি গ্রহণযোগ্য হওয়া উচিত)।

পুনশ্চ. আমি এপিআই এর প্রধান লেখক ছিল


1
আমি মনে করি এটি গৃহীত উত্তরের চেয়ে বেশি কার্যকর কারণ জোনআইড (টাইমজোন) হল প্যারামিটার এবং জোনঅফসেট নয় (ইউটিসি থেকে স্থানান্তরিত ঘন্টা, যা গ্রীষ্ম / শীতের সময়সীমার জন্য পরিবর্তিত হতে পারে)।
wuerg

1
একটি ইউনিট পরীক্ষায় আমি লিখছি, আমার একটি লোকাল ডেট রয়েছে, এটি একটি com.google.protobuf.Timestamp এ রূপান্তরিত হয় এবং তারপরে তাত্ক্ষণিকভাবে উভয় উপায়ে ম্যাপ করা যায় ate গৃহীত উত্তরের প্রস্তাবটি ব্যবহার করার সময় আমি প্রত্যাশিত স্থানীয় তারিখ পেয়ে যাই, তবে এই পদ্ধতির ব্যবহারটি আমাকে "আজ" এর পরিবর্তে "গতকাল" ফিরিয়ে দেয়। আমার
টাইমজোনটি

127

এটিকে তাত্ক্ষণিক রূপান্তর করতে আপনার লোকালডেটটাইম উদাহরণ থাকতে হবে, যেমন:

LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)

অনেক ধন্যবাদ. আমি এখন বুঝতে পারি যে তাত্ক্ষণিকভাবে পাওয়ার জন্য আমার একটি সময় অঞ্চল নির্দিষ্ট করতে হবে।
ব্যবহারকারী1643352
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.