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.Date
và java.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:
- 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ờ.
- 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ờ.
- LocalDateTime: Kết hợp của
LocalDate
vàLocalTime
, chứa cả ngày và thời gian nhưng không có múi giờ. - 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ể. - 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