java.time API বেসিক
Date এবং Calendar-এর পরিবর্তে ইমিউটেবল (immutable) এবং সুস্পষ্ট ডেট/টাইম টাইপ ব্যবহার করুন।
কোড তুলনা
✕ Pre-Java 8
// Mutable, confusing, zero-indexed months Calendar cal = Calendar.getInstance(); cal.set(2025, 0, 15); // January = 0! Date date = cal.getTime(); // not thread-safe
✓ Java 8+
LocalDate date = LocalDate.of(
2025, Month.JANUARY, 15);
LocalTime time = LocalTime.of(14, 30);
Instant now = Instant.now();
// immutable, thread-safe
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
ইমিউটেবল (Immutable)
ডেট/টাইম ভ্যালুগুলো ভুলবশত পরিবর্তন করা যায় না।
পরিষ্কার API
Month.JANUARY ব্যবহার করুন, 0 নয়। DayOfWeek.MONDAY ব্যবহার করুন, 2 নয়।
থ্রেড-সেফ (Thread-safe)
সিঙ্ক্রোনাইজেশনের প্রয়োজন নেই – থ্রেড জুড়ে অবাধে শেয়ার করা যায়।
পুরনো পদ্ধতি
Date + Calendar
আধুনিক পদ্ধতি
java.time.*
JDK থেকে
8
কঠিনতা
প্রাথমিক
JDK সমর্থন
java.time API বেসিক
উপলব্ধ
JDK 8 (মার্চ 2014) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
java.time API-তে LocalDate, LocalTime, LocalDateTime, Instant, ZonedDateTime এর মতো ক্লাস রয়েছে, যা সবই ইমিউটেবল এবং থ্রেড-সেফ। মাসগুলো 1-ইনডেক্সড। এর ফলে Calendar.JANUARY = 0 এর মতো বিভ্রান্তি আর থাকে না।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ