مسیر
/
Java
Java
/
برنامه‌ی درسی
/
تاریخ و زمان
تا

تاریخ و زمان در Java

6 تمرین

درباره‌ی تاریخ و زمان

بسته‌ی java.time که در Java 8 معرفی شد، چندین کلاس برای کار با تاریخ و زمان دارد.

LocalDate

کلاس java.time.LocalDate نماینده‌ی یک تاریخ بدون منطقه‌ی زمانی در تقویم ISO-8601 است، مانند 2007-12-03:

LocalDate date = LocalDate.of(2007, 12, 3);

تاریخ‌ها را می‌توان با تاریخ‌های دیگر مقایسه کرد:

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

یک نمونه‌ی LocalDate متدهایی برای بازیابی اجزای زمان از آن دارد:

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

یک نمونه‌ی LocalDate متدهایی برای افزودن واحدهای زمان به آن دارد.

Note

این متدها یک نمونه‌ی جدید LocalDate برمی‌گردانند و نمونه‌ی موجود را به‌روزرسانی نمی‌کنند، چون کلاس LocalDate تغییرناپذیر است.

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

کلاس java.time.LocalDateTime نماینده‌ی یک تاریخ-زمان بدون منطقه‌ی زمانی در تقویم ISO-8601 است، مانند 2007-12-03T10:15:30:

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

مانند کلاس LocalDate، یک نمونه‌ی LocalDateTime هم همان متدها را برای مقایسه با LocalDateTime‌های دیگر و افزودن واحدهای زمان به آن دارد.

همچنین می‌توان یک نمونه‌ی LocalDate را به یک LocalDateTime تبدیل کرد:

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

قالب‌بندی تاریخ-زمان

هر دو کلاس LocalDate و LocalDateTime هنگام تبدیل از و به یک String از نگارش استاندارد ISO-8601 استفاده می‌کنند.

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

تلاش برای تجزیه‌ی یک LocalDate یا LocalDateTime از یک String به این شکل با قالبی متفاوت امکان‌پذیر نیست. در عوض، برای قالب‌بندی تاریخ‌ها با یک قالب سفارشی، باید از java.time.format.DateTimeFormatter استفاده کنید:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

هنگام ساختن قالب سفارشی می‌توان یک محیط محلی هم مشخص کرد تا قالب‌بندی و تجزیه برای مناطق مختلف انجام شود:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
ویرایش از طریق GitHub این پیوند در پنجره یا زبانه‌ی جدیدی باز می‌شود

تاریخ و زمان را یاد بگیرید