Vào năm 2014, việc phát hành Java 8 đã giới thiệu một API ngày và giờ mới. Bạn có thể dễ dàng truy cập API này bằng cách nhập gói java.time .
Với API ngày và giờ của Java 8, các nhà phát triển có thể dễ dàng truy cập vào ngày, giờ, múi giờ, phiên bản, thời lượng và khoảng thời gian. Các tính năng này có sẵn thông qua danh sách mở rộng các lớp trong gói java.time .
Trong hướng dẫn này, bạn sẽ tìm hiểu năm tính năng hữu ích của API ngày và giờ Java 8.
1. Nhận Giờ địa phương của bạn
API ngày và giờ của Java 8 đi kèm với một lớp gọi là LocalTime . Lớp này cung cấp thời gian ở định dạng giờ-phút-giây .
Liên quan: API đại diện cho điều gì? Ví dụ về cách sử dụng API
Để có được thời gian hiện tại của bạn bằng cách sử dụng lớp này, trước tiên bạn sẽ phải tạo một đối tượng mới của lớp LocalTime . Sau đó, truyền đối tượng được truy xuất từ phương thức now () cho nó. Đối tượng mới được tạo sau đó sẽ lưu trữ thời gian thực hiện chương trình hiện tại. Điều này là do phương thức now () lấy thời gian hiện tại từ đồng hồ hệ thống trên máy tính của bạn.
Sử dụng ví dụ lớp LocalTime
import java.time.LocalTime; public class DateTimeAPI { public static void main(String[] args) { // create a new time object that stores the local time LocalTime time = LocalTime.now(); System.out.println("The current hour is: " + time.getHour()); System.out.println("The current minute is: " + time.getMinute()); System.out.println("The current second is: " + time.getSecond()); System.out.println("The current time to the nanosecond is: " + time); } }
Đoạn mã trên hoàn thành một số tác vụ đơn giản bằng cách sử dụng các phương thức LocalTime khác nhau . Việc thực thi đoạn mã trên sẽ tạo ra kết quả sau trong bảng điều khiển.
The current hour is: 10 The current minute is: 45 The current second is: 19 The current time to the nanosecond is: 10:45:19.324014300
2. Lấy ngày địa phương của bạn
Bạn có thể lấy ngày giờ địa phương của mình thông qua API ngày và giờ của Java 8, giống như cách bạn truy xuất giờ địa phương của mình. Sự khác biệt duy nhất là bạn sử dụng lớp LocalDate thay vì lớp LocalTime .
Liên quan: Tìm hiểu cách tạo lớp trong Java
Lớp LocalDate sử dụng cấu trúc năm-tháng-ngày để hiển thị ngày hệ thống trên máy tính của bạn, với sự trợ giúp của phương thức now () . Lớp LocalDate cung cấp quyền truy cập vào hơn 50 phương thức khác nhau, nhưng những phương thức mà bạn có thể sử dụng thường xuyên hơn như sau.
- now () (không có đối số và trả về ngày hiện tại)
- getYear () (không có đối số và trả về năm hiện tại)
- getMonth () (không có đối số và trả về tháng hiện tại)
- getDayOfWeek () (không có đối số và trả về ngày hiện tại trong tuần)
- getDayOfMonth () (không có đối số và trả về ngày hiện tại của tháng)
- getDayOfYear () (không có đối số và trả về ngày hiện tại trong năm)
Sử dụng ví dụ lớp LocalDate
import java.time.LocalDate; public class DateTimeAPI { public static void main(String[] args) { // create a new date object that stores the local date LocalDate date = LocalDate.now(); System.out.println("The current year is: " + date.getYear()); System.out.println("The current month is: " + date.getMonth()); System.out.println("The current day of the week is: " + date.getDayOfWeek()); System.out.println("The current day of the Month is: " + date.getDayOfMonth()); System.out.println("The current day of the year is: " + date.getDayOfYear()); System.out.println("The current date is: " + date); } }
Đoạn mã trên tạo ra kết quả sau trong bảng điều khiển.
The current year is: 2021 The current month is: SEPTEMBER The current day of the week is: TUESDAY The current day of the Month is: 14 The current day of the year is: 257 The current date is: 2021-09-14
3. Kiểm tra xem năm hiện tại có phải là năm nhuận không
Trong số nhiều phương thức trong lớp LocalDate là phương thức isLeapYear () . Bạn có thể sử dụng phương pháp này để kiểm tra xem một năm nhất định có phải là năm nhuận hay không. Để kiểm tra năm hiện tại, bạn có thể tạo một đối tượng LocalDate mới bằng phương thức now () và sử dụng phương thức isLeapYear () trên đối tượng mới được tạo.
Sử dụng phương thức isLeapYear () trên đối tượng LocalDate sẽ trả về giá trị boolean, giá trị này sẽ đúng nếu năm là năm nhuận và nếu ngược lại là false.
Sử dụng ví dụ về phương thức isLeapYear ()
import java.time.LocalDate; public class DateTimeAPI { public static void main(String[] args) { // create an object to store the current date. LocalDate date = LocalDate.now(); // check if the current year is a leap year. boolean isLeap = date.isLeapYear(); // get the current year from the current date. int year = date.getYear(); // tell the user if the current year is a leap year. if (isLeap) { System.out.println(year + " is a leap year."); } else { System.out.println(year + " is not a leap year."); } } }
Đoạn mã trên sẽ tạo ra kết quả sau trong bảng điều khiển.
2021 is not a leap year.
4. Lấy ngày và giờ địa phương của bạn
Có một lớp trong API ngày và giờ của Java 8 được gọi là LocalDateTime . Đúng như tên gọi của nó, bạn có thể sử dụng lớp này để lấy ngày và giờ ở vị trí hiện tại của mình.
Lớp có một số phương thức quan trọng, nhưng phương thức now () có thể là phương thức mà bạn muốn làm quen trước tiên. Phương thức now () của lớp LocalDateTime trả về ngày và giờ ở vị trí hiện tại của bạn. Nó sử dụng cấu trúc năm-tháng-ngày T giờ: phút: giây ; trong đó ngày xuất hiện đầu tiên và chữ t viết hoa ngăn cách nó với thời gian.
Sử dụng ví dụ lớp LocalDateTime
import java.time.LocalDateTime; public class DateTimeAPI { public static void main(String[] args) { // create a new date object that stores the local date LocalDateTime dateTime = LocalDateTime.now(); // the current time System.out.println("The current hour is: " + dateTime.getHour()); System.out.println("The current minute is: " + dateTime.getMinute()); System.out.println("The current second is: " + dateTime.getSecond()); // the current date System.out.println("The current year is: " + dateTime.getYear()); System.out.println("The current month is: " + dateTime.getMonth()); System.out.println("The current day of the week is: " + dateTime.getDayOfWeek()); System.out.println("The current day of the Month is: " + dateTime.getDayOfMonth()); System.out.println("The current day of the year is: " + dateTime.getDayOfYear()); // the current date and time System.out.println("The current date and time is: " + dateTime); } }
Đoạn mã trên t���o ra kết quả sau trong bảng điều khiển.
The current hour is: 11 The current minute is: 9 The current second is: 30 The current year is: 2021 The current month is: SEPTEMBER The current day of the week is: TUESDAY The current day of the Month is: 14 The current day of the year is: 257 The current date and time is: 2021-09-14T11:09:30.009675800
Như bạn có thể thấy từ đầu ra ở trên, lớp LocalDateTime có thể tạo kết hợp ngày và giờ, cũng như các giá trị riêng lẻ (chẳng hạn như tháng hiện tại), mà bạn có thể lấy từ các lớp LocalDate và LocalTime.
5. Lấy ngày và giờ hiện tại của một địa điểm bằng cách sử dụng múi giờ của nó
Như bạn đã thấy cho đến nay, API ngày và giờ của Java 8 có nhiều tính năng hữu ích. Một tính năng hữu ích khác là khả năng lấy múi giờ của vị trí hiện tại của bạn hoặc ngày và giờ tại một vị trí bằng cách sử dụng múi giờ của nó.
Sử dụng Ví dụ về lớp ZonedDateTime
import java.time.ZoneId; import java.time.ZonedDateTime; public class DateTimeAPI { public static void main(String[] args) { // create a new object to store your local date, time, and time-zone. ZonedDateTime zDateTime = ZonedDateTime.now(); // create a zoneId object to store your local time-zone ZoneId localTimeZone = zDateTime.getZone(); // create a new zoneId object to store the zoneId provided by the user ZoneId newZoneId = ZoneId.of("GMT-03:00"); // create an object to store the current date, time, and time-zone // retrieved using the zoneId provide by the user ZonedDateTime newLocation = ZonedDateTime.now(newZoneId); System.out.println("The date, time, and time-zone at your current location is: " + zDateTime); System.out.println("The time-zone at your current location is: " + localTimeZone); System.out.println("The date, time, and time-zone at the new time-zone is: " + newLocation ); } }
Rất nhiều điều đang xảy ra trong đoạn mã trên. Giống như các lớp trước, lớp ZoneDateTime sử dụng phương thức now () , trong trường hợp này trả về một đối tượng có ngày, giờ và múi giờ hiện tại.
Tuy nhiên, không giống như các ví dụ trước, lớp ZoneDateTime lấy một múi giờ từ người dùng và trả về ngày và giờ thích hợp.
Đoạn mã trên sẽ tạo ra kết quả sau trong bảng điều khiển.
The date, time, and time-zone at your current location is: 2021-09-14T15:00:17.029010300-05:00[GMT-05:00] The time-zone at your current location is: GMT-05:00 The date, time, and time-zone at the new time-zone is: 2021-09-14T17:00:17.042989-03:00[GMT-03:00]
Như bạn có thể thấy từ kết quả ở trên, múi giờ GMT-03: 00 đi trước múi giờ GMT-05: 00 hai giờ.
Tìm hiểu thêm về API
Trong hướng dẫn này, bạn đã tìm hiểu về năm tính năng hàng đầu đi kèm với API ngày và giờ của Java 8. Danh sách này không có nghĩa là hoàn chỉnh và có các tính năng khác của API mà bạn có thể khám phá.
Tuy nhiên, nếu bạn tò mò về cách thức hoạt động của các API nói chung, thì cũng có các tài nguyên để giúp bạn làm điều đó.