উত্তর:
আপনি করতে পারেন:
timeStamp.toLocalDateTime().toLocalDate();
নোটটি রূপান্তর করতে সময় অঞ্চল
timestamp.toLocalDateTime()
ব্যবহার করবেClock.systemDefaultZone()
। এটি আপনি যা চান তা হতে পারে বা নাও পারে।
timestamp.toLocalDateTime()
রূপান্তরটি করতে পদ্ধতিটি সিস্টেম-ডিফল্ট সময় অঞ্চলটি ব্যবহার করবে। এটি আপনি যা চান তা হতে পারে বা নাও পারে।
LocalDateTime
সর্বদা সিস্টেম-ডিফল্ট টাইমজোন ব্যবহার করে। এর নামে "স্থানীয়" এর অর্থ এটি।
গৃহীত উত্তরটি আদর্শ নয়, তাই আমি আমার 2 সেন্ট যুক্ত করার সিদ্ধান্ত নিয়েছি
timeStamp.toLocalDateTime().toLocalDate();
সাধারণভাবে এটি একটি খারাপ সমাধান , আমি এখনও নিশ্চিত নই যে তারা কেন এই পদ্ধতিটিকে জেডিকে যুক্ত করেছিল কারণ এটি সিস্টেম টাইমজোন ব্যবহার করে অন্তর্নিহিত রূপান্তর করে জিনিসগুলিকে সত্যই বিভ্রান্ত করে তোলে। সাধারণত যখন জাভা ৮ তারিখের ক্লাস ব্যবহার করা হয় তখন প্রোগ্রামার একটি সময় অঞ্চল নির্দিষ্ট করতে বাধ্য হয় যা একটি ভাল জিনিস।
ভাল সমাধান হয়
timestamp.toInstant().atZone(zoneId).toLocalDate()
কোথায় zoneId সময় অঞ্চল আপনি যা সাধারণত হয় ব্যবহার করতে চান পারেন ZoneId.systemDefault () আপনার সিস্টেম সময় অঞ্চল বা মত কিছু হার্ডকোডেড সময় অঞ্চল ব্যবহার করতে চান তাহলে ZoneOffset.UTC
সাধারণ পদ্ধতির হওয়া উচিত
সময় অঞ্চলটি বিবেচনায় নেওয়ার জন্য আমি @Asslias উত্তরটি সামান্য প্রসারিত করব। নির্দিষ্ট সময় অঞ্চলের জন্য লোকালডেটটাইম পাওয়ার কমপক্ষে দুটি উপায় রয়েছে।
আপনি পুরো অ্যাপ্লিকেশনটির জন্য সেটডফল্ট সময় অঞ্চল ব্যবহার করতে পারেন। যেকোন টাইমস্ট্যাম্প -> জাভা.টাইম রূপান্তর করার আগে এটি কল করা উচিত:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
বা আপনি To ToIstant.atZone চেইন ব্যবহার করতে পারেন:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();