1. Lớp DateTimeFormatter
Lớp đặc biệt DateTimeFormatter
tìm đường vào API Ngày Giờ. Mục đích của nó là giúp các lập trình viên dễ dàng chuyển đổi ngày và giờ thành định dạng chính xác mà họ muốn. Và chúng tôi vui mừng thông báo rằng những người tạo ra Java đã thành công.
Sử dụng nó rất dễ dàng. Trước tiên, bạn cần tạo một DateTimeFormatter
lớp và chuyển vào một mẫu xác định cách nó sẽ hiển thị ngày và giờ:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Đâu dtf
là một DateTimeFormatter
biến. là một phương thức tĩnh của lớp. Và mẫu là một chuỗi chỉ định mẫu sẽ được sử dụng để hiển thị ngày và giờ.DateTimeFormatter.ofPattern()
DateTimeFormatter
ví dụ
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
Trong ví dụ trên, chúng ta sử dụng ofPattern()
phương thức để tạo một DateTimeFormatter
đối tượng dựa trên mẫu. Và trong dòng tiếp theo, chúng ta sử dụng format()
phương thức để chuyển đổi một LocalDateTime
đối tượng thành một chuỗi. Bạn thấy kết quả trên màn hình.
Bạn có thể chuyển hầu hết mọi đối tượng từ API Thời gian Ngày sang format()
phương thức.
Tĩnh ofPattern()
cũng rất đơn giản: nó lấy một mẫu làm đối số và trả về một DateTimeFormatter
đối tượng. Phần thú vị nhất được tìm thấy trong mô hình.
2. Định dạng mẫu
Chuỗi được truyền dưới dạng mẫu được sử dụng làm mẫu khi hiển thị thông tin. MM được thay thế bằng số tháng, dd bằng ngày trong tháng và yy bằng số của năm. Trường hợp của các chữ cái quan trọng.
Bảng đầy đủ cho các mẫu thời gian này là:
Thư | Nghĩa |
---|---|
y | Năm |
m | Tháng |
đ | Ngày |
h | Giờ |
tôi | Phút |
S | giây |
S | Một phần nghìn giây |
N | Nano giây. |
Đặc biệt không khó nhớ.
Nhưng tại sao mẫu trong ví dụ bao gồm các chữ cái lặp lại MM, dd và yy? Vâng, đây là nơi nó trở nên thú vị hơn.
Ý tưởng chung
Số lượng chữ cái ảnh hưởng đến độ dài của văn bản. Càng nhiều chữ cái, văn bản sẽ càng dài.
Nếu chữ H được chỉ định một lần, thì 9 giờ sẽ được hiển thị là 9, nhưng nếu chữ H được chỉ định hai lần liên tiếp, thì 9 giờ sẽ được hiển thị là 09.
Nếu chữ y được chỉ định 2 lần liên tiếp, thì năm được viết bằng 2 chữ số. Nếu nó xảy ra 4 lần liên tiếp, thì 4 chữ số được sử dụng.
Nếu chữ M được chỉ định 2 lần liên tiếp, thì số tháng được viết. Nếu 3 lần liên tiếp, thì tên của tháng (3 chữ cái đầu tiên) được sử dụng. Nếu 4 lần liên tiếp thì dùng tên đầy đủ của tháng.
Ví dụ:
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
3. Bảng mẫu hoàn chỉnh
Toàn bộ bảng khá lớn và siêu thú vị:
Mẫu | Các biến thể của mô hình | Ví dụ | Sự miêu tả |
---|---|---|---|
y | yy, yyyy | 19; 2019 | Năm |
M/L | M, MM, MM, MMMM, MMMMMM | 1; 01; Tháng một; Tháng Giêng; J | Tháng |
đ | đ, đ | 9; 09 | Ngày |
h | H, H | 2; 02 | Giờ |
tôi | m, mm | 3; 03 | Phút |
S | s, ss | 5; 05 | giây |
S | S, SS, SS, ... | 1; 12; 123 | Một phần nghìn giây |
N | N | 123456789 | Nano giây |
g | G, GGGG, GGGGG | QUẢNG CÁO; Sau Công Nguyên; MỘT; | Kỷ nguyên |
hỏi đáp | q, qq, qqq, qqqq | 3; 03; Q3; quý 3 | Một phần tư |
w | w | 13 | Tuần của năm |
W | W | 3 | tuần của tháng |
e | EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE | Thứ hai; Thứ hai; m | Ngày trong tuần |
đ/c | e, e, eee, eeeee, eeeee | 1; 01; Thứ hai; Thứ hai; m | Ngày trong tuần |
Một | Một | BUỔI CHIỀU | sáng hoặc chiều |
h | h | 12 | Đồng hồ 12 giờ. |
V | VV | Châu Âu/Helsinki | Múi giờ |
z | z zzzz | EET; Giờ chuẩn Đông Âu | Múi giờ |
Ô | Ơ OOOO | GMT+2; GMT+02:00 | Múi giờ |
Nhân tiện, đây không thực sự là một phiên bản hoàn chỉnh. Bạn có thể tìm thấy phiên bản đầy đủ nhất tại đây .
4. Thời gian phân tích cú pháp
Lớp này DateTimeFormatter
cũng rất thú vị vì khả năng không chỉ chuyển đổi ngày và giờ thành một chuỗi theo một mẫu nhất định mà còn thực hiện thao tác ngược lại!
Phân tích cú pháp một chuỗi là quá trình tách nó thành các mã thông báo có ý nghĩa.
Đây là những gì nó trông giống như:
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
Đầu tiên, chúng tôi tạo một DateTimeFormatter
đối tượng và đặt mẫu được sử dụng để phân tích cú pháp.
Sau đó, chúng tôi gọi phương thức LocalDate.parse()
hoặc LocalTime.parse()
hoặc LocalDateTime.parse()
và chuyển vào chuỗi để được phân tích cú pháp cùng với DateTimeFormatter
đối tượng, hiểu cách phân tích cú pháp văn bản đã truyền và mẫu nào sẽ được sử dụng để thực hiện điều đó.
Một ví dụ khác: lần này chúng ta sẽ phân tích thời gian.
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
GO TO FULL VERSION