5 полезных функций Java 8 Date and Time API
В 2014 году в выпуске Java 8 был представлен новый API даты и времени. Вы можете легко получить доступ к этому API, импортировав пакет java.time .
С помощью API даты и времени Java 8 разработчики имеют легкий доступ к датам, времени, часовым поясам, моментам, продолжительности и периодам. Эти функции доступны через обширный список классов в пакете java.time .
В этом руководстве вы познакомитесь с пятью полезными функциями API даты и времени Java 8.
1. Определение вашего местного времени
API даты и времени Java 8 поставляется с классом LocalTime . Этот класс предоставляет время в формате час-минута-секунда .
Чтобы узнать ваше текущее время с помощью этого класса, вам сначала нужно создать новый объект класса LocalTime . Затем передайте ему объект, полученный из метода now () . Вновь созданный объект будет хранить текущее время выполнения программы. Это связано с тем, что метод now () извлекает текущее время из системных часов, установленных на вашем компьютере.
Использование примера класса 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);
}
}
Приведенный выше код выполняет несколько простых задач с использованием разных методов LocalTime . Выполнение приведенного выше кода приводит к следующему выводу в консоли.
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. Определите дату своего проживания
Вы можете получить местную дату через API даты и времени Java 8 почти так же, как вы получаете местное время. Единственное отличие состоит в том, что вы используете класс LocalDate вместо класса LocalTime .
Класс LocalDate использует структуру год-месяц-день для отображения системной даты на вашем компьютере с помощью метода now () . Класс LocalDate предоставляет доступ к более чем 50 различным методам, но наиболее часто вы можете использовать следующие.
- now () (не принимает аргументов и возвращает текущую дату)
- getYear () (не принимает аргументов и возвращает текущий год)
- getMonth () (не принимает аргументов и возвращает текущий месяц)
- getDayOfWeek () (не принимает аргументов и возвращает текущий день недели)
- getDayOfMonth () (не принимает аргументов и возвращает текущий день месяца)
- getDayOfYear () (не принимает аргументов и возвращает текущий день года)
Использование примера класса 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);
}
}
Приведенный выше код дает в консоли следующий вывод.
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. Проверьте, является ли текущий год високосным.
Среди многих методов класса LocalDate есть метод isLeapYear () . Вы можете использовать этот метод, чтобы проверить, является ли данный год високосным. Чтобы проверить текущий год, вы можете создать новый объект LocalDate с помощью метода now () и использовать метод isLeapYear () для вновь созданного объекта.
Использование метода isLeapYear () для объекта LocalDate вернет логическое значение, которое будет истинным, если год високосный, и ложным в противном случае.
Использование примера метода 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.");
}
}
}
Приведенный выше код приведет к следующему выводу в консоли.
2021 is not a leap year.
4. Получите вашу местную дату и время
В API даты и времени Java 8 есть класс LocalDateTime . Как следует из названия, вы можете использовать этот класс для получения даты и времени в вашем текущем местоположении.
У класса есть несколько важных методов, но метод now () может быть тем, с которым вы хотите познакомиться в первую очередь. Метод now () класса LocalDateTime возвращает дату и время вашего текущего местоположения. Он использует структуру год-месяц-день T час: минуты: секунды ; где дата стоит первой, а время отделяется заглавной буквой t.
Использование примера класса 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);
}
}
Приведенный выше код дает в консоли следующий вывод.
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
Как видно из выходных данных выше, класс LocalDateTime может генерировать комбинацию даты и времени, а также отдельные значения (например, текущий месяц), которые вы можете получить из классов LocalDate и LocalTime.
5. Получите текущую дату и время местоположения, используя его часовой пояс.
Как вы уже видели, API даты и времени Java 8 имеет множество полезных функций. Еще одна полезная функция – это возможность получить часовой пояс вашего текущего местоположения или дату и время в месте, используя его часовой пояс.
Использование примера класса 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 );
}
}
В приведенном выше коде много чего происходит. Как и предыдущие классы, класс ZoneDateTime использует метод now () , который в этом случае возвращает объект с текущей датой, временем и часовым поясом.
Однако, в отличие от предыдущих примеров, класс ZoneDateTime принимает часовой пояс от пользователя и возвращает соответствующие дату и время.
Приведенный выше код приведет к следующему выводу в консоли.
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]
Как видно из выходных данных выше, часовой пояс GMT-03: 00 на два часа опережает часовой пояс GMT-05: 00.
Узнать больше об API
В этом руководстве вы узнали о пяти основных функциях, которые поставляются с API даты и времени Java 8. Этот список ни в коем случае не является полным, и есть другие функции API, которые вы можете изучить.
Однако, если вам интересно, как работают API в целом, есть ресурсы, которые помогут вам и в этом.