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 . Этот класс предоставляет время в формате час-минута-секунда .

Связано: что означает API? Примеры использования API

Чтобы узнать ваше текущее время с помощью этого класса, вам сначала нужно создать новый объект класса 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 .

Связанный: Узнайте, как создавать классы в Java

Класс 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 в целом, есть ресурсы, которые помогут вам и в этом.