Một trường thời gian (temporal field) là một trường của ngày-giờ, chẳng hạn như tháng-trong-năm hoặc giờ-trong-phút. Các trường này được biểu diễn bởi interface TemporalField và lớp ChronoField triển khai interface này.
Dưới đây là danh sách các trường thời gian liên quan đến ngày được hỗ trợ bởi lớp ChronoField:
| Trường | Mô tả |
|---|---|
| ALIGNED_DAY_OF_WEEK_IN_MONTH | Trường này biểu diễn ngày trong tuần trong một tháng. |
| ALIGNED_DAY_OF_WEEK_IN_YEAR | Trường này biểu diễn ngày căn chỉnh của tuần trong một năm. |
| ALIGNED_WEEK_OF_MONTH | Trường này biểu diễn tuần căn chỉnh của một tháng. |
| ALIGNED_WEEK_OF_YEAR | Trường này biểu diễn tuần căn chỉnh của một năm. |
| DAY_OF_MONTH | Trường này biểu diễn ngày của một tháng. |
| DAY_OF_WEEK | Trường này biểu diễn ngày của một tuần. |
| DAY_OF_YEAR | Trường này biểu diễn ngày của một năm. |
| EPOCH_DAY | Trường này biểu diễn ngày epoch. |
| ERA | Trường này biểu diễn kỷ nguyên của năm. |
| YEAR | Trường này biểu diễn năm. |
| YEAR_OF_ERA | Trường này biểu diễn năm của kỷ nguyên. |
Phương thức get() hoặc getLong() của các lớp LocalDate và LocalDateTime chấp nhận một trường thời gian làm tham số và lấy giá trị của trường đó trong đối tượng hiện tại.
Ví dụ 1: Sử dụng LocalDate
import java.time.LocalDate;
import java.time.temporal.ChronoField;
public class Demo {
public static void main(String args[]) {
// Khởi tạo lớp LocalDate
LocalDate lDate = LocalDate.now();
int field = lDate.get(ChronoField.DAY_OF_MONTH);
System.out.println("Ngày của tháng: " + field);
field = lDate.get(ChronoField.DAY_OF_WEEK);
System.out.println("Ngày của tuần: " + field);
field = lDate.get(ChronoField.DAY_OF_YEAR);
System.out.println("Ngày của năm: " + field);
long epoch = lDate.getLong(ChronoField.EPOCH_DAY);
System.out.println("Ngày epoch: " + epoch);
field = lDate.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH);
System.out.println("Tuần trong tháng: " + field);
field = lDate.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR);
System.out.println("Ngày của tuần trong năm: " + field);
field = lDate.get(ChronoField.ERA);
System.out.println("Kỷ nguyên: " + field);
}
}
Kết quả
Ngày của tháng: 11 Ngày của tuần: 3 Ngày của năm: 316 Ngày epoch: 18577 Tuần trong tháng: 4 Ngày của tuần trong năm: 1 Kỷ nguyên: 1
Ví dụ 2: Sử dụng Year, Month, DayOfWeek
import java.time.DayOfWeek;
import java.time.LocalTime;
import java.time.Month;
import java.time.Year;
import java.time.temporal.ChronoField;
public class Demo {
public static void main(String args[]) {
// Khởi tạo lớp LocalTime
LocalTime lTime = LocalTime.now();
System.out.println(lTime);
int field = Year.of(2019).get(ChronoField.YEAR);
System.out.println("Năm: " + field);
field = Month.of(8).get(ChronoField.MONTH_OF_YEAR);
System.out.println("Tháng: " + field);
field = DayOfWeek.of(3).get(ChronoField.DAY_OF_WEEK);
System.out.println("Ngày trong tuần: " + field);
}
}
Kết quả
20:01:43.171 Năm: 2019 Tháng: 8 Ngày trong tuần: 3