আমি রূপান্তর করতে চান java.time.LocalDate
মধ্যে java.util.Date
প্রকার। কারণ আমি তারিখটি সেট করতে চাই JDateChooser
। বা এমন কোনও তারিখ চয়নকারী রয়েছে যা java.time
তারিখগুলি সমর্থন করে ?
আমি রূপান্তর করতে চান java.time.LocalDate
মধ্যে java.util.Date
প্রকার। কারণ আমি তারিখটি সেট করতে চাই JDateChooser
। বা এমন কোনও তারিখ চয়নকারী রয়েছে যা java.time
তারিখগুলি সমর্থন করে ?
উত্তর:
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
এটি ধরে নিয়েছে যে আপনার তারিখ চয়নকারী তারিখগুলিকে স্ট্রিংয়ে রূপান্তর করতে সিস্টেম ডিফল্ট টাইমজোন ব্যবহার করে।
atStartOfDay()
, যেহেতু এটি তারিখের মান পরিবর্তন করে, যেমনটি আমি এটি বুঝতে পারি।
নতুন java.time
ক্লাসগুলিকে java.util.Date
অবজেক্টে রূপান্তর করতে এবং তার বিপরীতে আমি এখানে একটি ইউটিলিটি ক্লাস ব্যবহার করি :
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class DateUtils {
public static Date asDate(LocalDate localDate) {
return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
}
public static Date asDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
public static LocalDate asLocalDate(Date date) {
return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
}
public static LocalDateTime asLocalDateTime(Date date) {
return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
}
}
@ অলিভ মন্তব্যের ভিত্তিতে সম্পাদিত।
ZoneId.systemDefault()
সমস্যাযুক্ত ব্যবহার করছে না কারণ বছরের জোরে সময় অঞ্চলগুলি পরিবর্তিত হয়। সুতরাং যদি 01-জানুয়ারীতে আমি টাইমজোন -05: 00 (কেন্দ্রীয়), তবে তারপরে 01-জুলাই আমি টাইমজোন -06: 00 (সেন্ট্রাল দিবালোক) এর ফলে দিবালোকের সঞ্চয়ের কারণে ভুল ফলাফলের কারণ হতে পারে না সময়?
আপনি এই java.sql.Date.valueOf()
পদ্ধতিটি ব্যবহার করতে পারেন :
Date date = java.sql.Date.valueOf(localDate);
এখানে সময় এবং সময় অঞ্চল তথ্য যুক্ত করার দরকার নেই কারণ সেগুলি নিখুঁতভাবে নেওয়া হয়েছে।
দেখুন java.util.Date করার LOCALDATE এবং simpliest রূপান্তর বিপরীতভাবে ভাইস?
java.sql.Date
ডাটাবেস স্তর, জেডিবিসি, জেপিএ বোঝানো হচ্ছে। ওয়েব স্তর (বা যে কোনও ক্লায়েন্ট অ্যাপ্লিকেশন) একেবারে যে কোনও নির্ভরতা থেকে মুক্ত হওয়া উচিত java.sql.*
।
java.sql.Date
ঠিক java.util.Date
এটির সময় নির্ধারণের সাথেই 00:00:00
তবে ডিজাইনের দৃষ্টিকোণটি হ'ল এটি java.sql.*
কোনও সামনের স্তরের জন্য নয় যা ক্লায়েন্টরা সার্লেলেটস / জেএসপির মতো ইন্টারেক্ট করে। java.util.Date
জাভা সাইডে এবং java.sql.Timestamp
বা java.sql.*
জেডিবিসি পাশ থেকে যা কিছু প্রযোজ্য ।
java.sql.*
শ্রেণি পৃথক নির্ভরতা হবে।
জাভা.টাইমের টেম্পোরাল ইন্টারফেস রয়েছে যা আপনি বেশিরভাগ সময় ক্লাস থেকে তাত্ক্ষণিক বস্তু তৈরি করতে ব্যবহার করতে পারেন। তাত্ক্ষণিকতা ইপচের সময়রেখায় মিলিসেকেন্ডগুলি উপস্থাপন করে - অন্যান্য সমস্ত তারিখ এবং সময়গুলির জন্য বেস রেফারেন্স।
রূপান্তর করতে আমাদের সময়কে একটি জোনডেটটাইম, একটি সময় এবং একটি অঞ্চল সহ রূপান্তর করতে হবে:
LocalDate ldate = ...;
Instant instant = Instant.from(ldate.atStartOfDay(ZoneId.of("GMT")));
Date date = Date.from(instant);
অর্ডার তৈরি করার জন্য java.util.Date A থেকে java.time.LocalDate , আছে তোমার কাছে
কোডটি নিম্নলিখিত হিসাবে দেখাতে পারে:
LocalDate localDate = LocalDate.now();
Date date = new Date(localDate.atStartOfDay(ZoneId.of("America/New_York")).toEpochSecond() * 1000);
এটি আমার পক্ষে কাজ করে:
java.util.Date d = new SimpleDateFormat("yyyy-MM-dd").parse(localDate.toString());
https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#toString--
কোটলিন সমাধান:
1) এই এক্সটেনশন ফাংশনটি কোথাও আটকান।
fun LocalDate.toDate(): Date = Date.from(this.atStartOfDay(ZoneId.systemDefault()).toInstant())
2) এটি ব্যবহার করুন, এবং এটি আবার কখনও গুগল।
val myDate = myLocalDate.toDate()
public static Date convertToTimeZone(Date date, String tzFrom, String tzTo) {
return Date.from(LocalDateTime.ofInstant(date.toInstant(), ZoneId.of(tzTo)).atZone(ZoneId.of(tzFrom)).toInstant());
}
সহজ
public Date convertFrom(LocalDate date) {
return java.sql.Timestamp.valueOf(date.atStartOfDay());
}
java.util.Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());