برنامه نویسی

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

سلام 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 الات یا موارد جالب استفاده از تاریخ/زمان؟ آنها را در نظرات رها کنید – بیایید گپ بزنیم!

برنامه نویسی مبارک! 👩‍💻👨‍💻

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا