×

Cách triển khai Date và Time API trong Java 8?

Java 8 giới thiệu Date and Time API mới trong gói java.time, thay thế cho các lớp cũ như java.util.Datejava.util.Calendar, với mục tiêu cung cấp một hệ thống quản lý ngày giờ mạnh mẽ, không thay đổi (immutable) và dễ sử dụng. API mới này được thiết kế dựa trên Joda-Time và đáp ứng nhu cầu xử lý ngày giờ phức tạp, bao gồm timezone và daylight saving time.

Các lớp quan trọng trong Date and Time API của Java 8:

  1. LocalDate: Đại diện cho một ngày (năm-tháng-ngày) mà không có thông tin về thời gian hay múi giờ.
  2. LocalTime: Đại diện cho một thời điểm trong ngày, với độ chính xác đến mili giây hoặc nano giây, không bao gồm ngày hoặc múi giờ.
  3. LocalDateTime: Kết hợp của LocalDateLocalTime, chứa cả ngày và thời gian nhưng không có múi giờ.
  4. ZonedDateTime: Tương tự như LocalDateTime nhưng bao gồm thông tin múi giờ. Sử dụng cho các thao tác liên quan đến múi giờ cụ thể.
  5. Instant: Đại diện cho một thời điểm cụ thể trên trục thời gian, tính từ Epoch Time (nửa đêm ngày 1 tháng 1 năm 1970 UTC).

Ví dụ sử dụng:

LocalDate

LocalDate today = LocalDate.now();
LocalDate specificDate = LocalDate.of(2024, Month.JANUARY, 1);

LocalTime

LocalTime now = LocalTime.now();
LocalTime specificTime = LocalTime.of(14, 30, 0); // 2:30 PM

LocalDateTime

LocalDateTime dateTime = LocalDateTime.now();
LocalDateTime specificDateTime = LocalDateTime.of(2024, Month.JANUARY, 1, 14, 30, 0);

ZonedDateTime

ZonedDateTime zonedNow = ZonedDateTime.now();
ZonedDateTime zonedSpecific = ZonedDateTime.of(specificDateTime, ZoneId.of("America/New_York"));

Instant

Instant now = Instant.now(); // Current moment in UTC

Các thao tác:

API cung cấp các phương thức để thực hiện các thao tác phổ biến, như cộng/trừ ngày, tháng, năm, so sánh ngày giờ, và chuyển đổi giữa các múi giờ.

LocalDate tomorrow = today.plusDays(1);
LocalDate lastMonthSameDay = today.minusMonths(1);
DayOfWeek dayOfWeek = today.getDayOfWeek();

Date and Time API mới của Java 8 giải quyết nhiều vấn đề của các lớp ngày giờ cũ và cung cấp một cách mạnh mẽ và linh hoạt để làm việc với ngày giờ trong ứng dụng Java của bạn.

Comments