تسلط بر تاریخ و زمان جاوا-با نمونه های واقعی زندگی

سلام devs! 👋
بیایید در مورد چیزی صحبت کنیم همه با کد معامله کنید: خرما و زمانبشر
این که آیا شما در حال ساختن یک وبلاگ ، ردیابی اشتراک های کاربر یا برنامه ریزی تماس های بزرگنمایی هستید ، در نهایت می خواهید زمان را کنترل کنید. و اگر این کار را در جاوا انجام می دهید ، خبرهای خوبی وجود دارد – جاوا 8 مدرن را معرفی کرد API تاریخ و زمان این راه بهتر از قدیمی است Date
وت Calendar
کلاس ها
امروز ، من قصد دارم شما را از طریق این API جدید با استفاده از نمونه های واقعی و به یاد ماندنی، و اطمینان حاصل کنید که سر خود را خراشیده اید و تعجب می کنید “هک چه لحظه ای است؟” 😅
☕ چرا API تاریخ جاوا قدیمی مکیده شد (کمی)
قبل از جاوا 8 ، ما مجبور شدیم از چیزهایی مانند استفاده کنیم java.util.Date
وت java.util.Calendar
بشر این کلاس ها عبارت بودند از:
- جهش یافته (به طور تصادفی اشیاء تاریخ را بدون تحقق آن تغییر می دهد)
- گیج کننده (ماهها از 0 شروع شد ، جدی؟)
- از موضوع ایمن نیست
- درد برای قالب و تجزیه
وارد کردن java.time
– بسته ابرقهرمانی که باعث می شود تاریخ و زمان کار منطقی ، تغییر ناپذیر و سرگرم کننده برای کار با آن باشد.
📅 بیایید شخصیت های اصلی را ملاقات کنیم
API جدید تاریخ و زمان را به بخش های منطقی تقسیم می کند – دقیقاً مانند اینکه در زندگی واقعی درباره آنها فکر می کنیم.
🔸 LocalDate
– فقط تاریخ
بیایید بگوییم که شما در حال ایجاد یک برنامه یادآوری تولد هستید. شما به زمان احتیاج ندارید – فقط تاریخ.
LocalDate birthday = LocalDate.of(1999, 12, 31);
System.out.println("Your birthday: " + birthday);
می خواهید تاریخ امروز را دریافت کنید؟
LocalDate today = LocalDate.now();
آیا باید بدانید که از چه تاریخ 10 روز خواهد بود؟
LocalDate future = today.plusDays(10);
System.out.println("10 days from now: " + future);
خوب و ساده
🔸 LocalTime
– فقط زمان
وقتی به ساعت اهمیت می دهید اما نه تقویم – مانند تنظیم یادآوری “5:30 بعد از ظهر هر روز” از این استفاده کنید.
LocalTime dinnerTime = LocalTime.of(17, 30);
System.out.println("Dinner's at: " + dinnerTime);
همچنین می توانید زمان فعلی را بگیرید:
LocalTime now = LocalTime.now();
🔸 LocalDateTime
– تاریخ وت زمان
بعضی اوقات به هر دو نیاز دارید – مانند برنامه ریزی یک جلسه یا رویدادهای ورود به سیستم.
LocalDateTime meeting = LocalDateTime.of(2025, 4, 14, 10, 30);
System.out.println("Team Meeting: " + meeting);
یا تاریخ و زمان فعلی را دریافت کنید:
LocalDateTime now = LocalDateTime.now();
🔸 ZonedDateTime
– برای زمانی که مناطق زمانی اهمیت دارند
در حالی که در پاریس هستید ، با کسی در نیویورک تماس می گیرید؟
ZonedDateTime newYorkNow = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println("Current time in New York: " + newYorkNow);
می توانید تمام مناطق موجود را با:
ZoneId.getAvailableZoneIds().forEach(System.out::println);
🔸 Instant
– کرنومتر جهان جاوا
فکر کردن Instant
مثل یک جدول زمانی. این یک لحظه خاص در زمان را نشان می دهد – که معمولاً در سیستم های باطن ، ورود به سیستم یا اندازه گیری زمان اجرای استفاده می شود.
Instant start = Instant.now();
// ...some code...
Instant end = Instant.now();
Duration timeElapsed = Duration.between(start, end);
System.out.println("Time taken: " + timeElapsed.toMillis() + "ms");
🧠 مثال در دنیای واقعی: ماشین حساب سن
بیایید بگوییم که شما در حال ساختن یک ویژگی کوچک هستید تا به کاربران نشان دهید که چند ساله بر اساس تولدشان است.
LocalDate birthDate = LocalDate.of(1999, 12, 31);
LocalDate today = LocalDate.now();
Period age = Period.between(birthDate, today);
System.out.println("You're " + age.getYears() + " years, "
+ age.getMonths() + " months, and " + age.getDays() + " days old.");
قابل خواندن است وت عملی ، درست است؟
🛠 قالب بندی و تجزیه-تاریخ های دوستانه انسان را تهیه کنید
می خواهید تاریخ خود را به عنوان نشان دهید 14-Apr-2025
به جای فرمت پیش فرض؟ استفاده کردن DateTimeFormatter
بشر
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
String formatted = LocalDate.now().format(formatter);
System.out.println("Formatted date: " + formatted);
و تبدیل یک رشته به یک تاریخ:
String dateStr = "25-Dec-2025";
LocalDate parsed = LocalDate.parse(dateStr, formatter);
System.out.println("Parsed date: " + parsed);
⏳ دوره در مقابل مدت زمان
دوره برای انسان است – “3 سال ، 2 ماه و 1 روز”.
مدت برای ماشین آلات است – “در میلی ثانیه یا ساعت”.
Period p = Period.between(LocalDate.of(2020, 1, 1), LocalDate.now());
System.out.println("It's been: " + p.getYears() + " years");
Duration d = Duration.ofHours(5);
System.out.println("Duration: " + d.toMinutes() + " minutes");
اگر تا به حال با کلاسهای قدیمی جاوا نبرد کرده اید ، این API جدید نفس هوای تازه است. همه چیز تمیز ، سازگار و منطقی است. شما تغییر ناپذیری دریافت می کنید (بدون تغییر تصادفی عجیب) ، نحو قابل خواندن و استفاده از مناطق زمانی و قالب بندی مدرن.
advice توصیه من؟ به java.time.*
و اجتناب کنید java.util.Date
مثل اینکه از درگیری در روز جمعه خودداری کنید.
برای به اشتراک گذاشتن س questions الات یا موارد جالب استفاده از تاریخ/زمان؟ آنها را در نظرات رها کنید – بیایید گپ بزنیم!
برنامه نویسی مبارک! 👩💻👨💻