Узнайте, как получить текущую дату и/или время в Java. Обратите внимание, что соответствующий способ обработки информации о дате и времени отличается до и после JDK 8.
- Для JDK 8 и более поздних версий рекомендуется использовать классы LocalDate и LocalTime.
- Для JDK 7 и более ранних версий мы можем использовать только классы Date и Calendar.
1. Получить текущую дату и время(Java 8 или более поздняя версия)
1.1 Основные классы
В Java 8 или более поздней версии информация о дате и времени представлена следующими классами. Эти классы предоставляют пользователю текущую дату и время локально, и с ними не связана информация о часовом поясе.
- java.time.LocalDate – представляет только информацию о дате в формате гггг-ММ-дд.
- java.time.LocalTime – представляет информацию только о времени в формате HH:mm:ss.SSSSSSSS.
- java.time.LocalDateTime – представляет информацию о дате и времени, обе, без информации о часовом поясе. Шаблон представляет собой комбинацию локальной информации о дате и времени.
Чтобы получить текущую информацию о дате и времени в другом часовом поясе/локали, мы можем использовать следующие классы.
- java.time.ZonedDateTime – представляет информацию о дате и времени в заданном часовом поясе.
1.2 Примеры кода
Следующий код показывает, как получить текущую информацию о дате и времени с помощью метода now() в каждом классе. Метод now() возвращает неизменяемый и потокобезопасный экземпляр класса, для которого он вызывается.
// Get current dateLocalDate today = LocalDate.now();System.out.println(today); //2022-02-15// Get current timeLocalTime now = LocalTime.now();System.out.println(now); //12:43:51.519251200// Get current date and timeLocalDateTime instance = LocalDateTime.now();System.out.println(instance); //2022-02-15T12:43:51.519251200
Чтобы получить информацию о дате и времени для конкретного часового пояса, передайте информацию о часовом поясе в методе ZonedDateTime.now().
// Get current date and time in GMTZonedDateTime tzInstance = ZonedDateTime.now(ZoneId.of("GMT"));System.out.println(tzInstance); //2022-02-15T07:13:51.519251200Z[GMT]
1.3 Отображение форматированной даты и времени
По умолчанию строковые представления указанных выше классов фиксированы. Если мы хотим отобразить информацию в каком-то пользовательском шаблоне, мы можем использовать класс DateTimeFormatter.
LocalDateTime instance = LocalDateTime.now();DateTimeFormatter formatter= DateTimeFormatter.ofPattern("dd-MM-yyyy hh:mm");String formattedString = formatter.format(instance); //15-02-2022 12:43
2. Получить текущую дату и время(Java 7 или более ранняя версия)
2.1 Основные классы
До версии 7 или более ранних Java не имела отдельных классов для частей даты и времени. Основными классами были:
- java.util.Дата
- java.util.Календарь
2.2 Примеры кода
Давайте кратко рассмотрим методы, используемые для получения текущей информации о дате и времени в устаревших классах Java.
Date date = new Date();System.out.println(date); //Tue Feb 15 13:00:31 IST 2022Calendar cal = Calendar.getInstance();System.out.println(cal);
2.3 Отображение форматированной даты и времени
Для отображения даты и времени в пользовательском формате следует использовать класс SimpleDateFormat.
Date date = new Date();Calendar cal = Calendar.getInstance();SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm");System.out.println(sdf.format(date)); //15-02-2022 01:04System.out.println(sdf.format(cal.getTime())); //15-02-2022 01:04