Преобразование Unix timestamp в Date: Java решение

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы преобразовать Unix timestamp в объект Date в Java, используйте следующий код: new Date(unixTimestamp * 1000L). В этом случае происходит перевод секунд в миллисекунды.

Java
Скопировать код
Date date = new Date(1633072800L * 1000L);
Кинга Идем в IT: пошаговый план для смены профессии

Узнаем больше о классах java.util.Date и java.time

Работать с датами и временем в Java можно двумя основными способами: с помощью проверенного временем класса java.util.Date и современного пакета java.time, введенного в версии Java 8.

Подробнее о классе java.util.Date

Класс java.util.Date давно знаком любому разработчику на Java. Интерфейсы по всему миру используют его для представления момента времени с точностью до миллисекунд:

Java
Скопировать код
long unixTimestampInSeconds = 1633072800L;
// Познакомимся с Unix timestamp
Date legacyDate = new Date(unixTimestampInSeconds * 1000L);

Если вам уже известно значение временной метки в миллисекундах, преобразование не требуется:

Java
Скопировать код
long unixTimestampInMilliseconds = 1633072800000L;
Date legacyDateFromMillis = new Date(unixTimestampInMilliseconds); // Просто и элегантно!

При работе с Date важно учитывать часовые пояса и форматирование. Для этих целей можно использовать SimpleDateFormat, чтобы отформатировать дату по своему усмотрению:

Java
Скопировать код
SimpleDateFormat sdf = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String formattedDate = sdf.format(legacyDate); // Прекрасно отформатированная дата!

Используем актуальный пакет java.time

С появлением API java.time, реализующего стандарт JSR-310, Java сумела добиться значительного прогресса. Если вы используете Java 8 или более новую версию, предпочтение следует отдать пакету java.time:

Java
Скопировать код
Instant instant = Instant.ofEpochSecond(unixTimestampInSeconds);
Date modernDate = Date.from(instant); // Путешествие во времени на скорости Java!

Для тонкой работы с часовыми поясами великолепно подходит ZonedDateTime:

Java
Скопировать код
ZoneId zoneId = ZoneId.of("America/New_York");
ZonedDateTime zonedDateTime = instant.atZone(zoneId);

Instant удобно преобразовывать в другие типы, например в LocalDateTime, что делает его незаменимым инструментом:

Java
Скопировать код
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

Визуализация

Считайте Unix timestamp шифром 🕵️, а объект Java Date ключом к его расшифровке:

Markdown
Скопировать код
Unix Timestamp (🕒): 1633072800

Расшифровка:

Java
Скопировать код
// 🕵️‍♀️ Расшифровываем загадочное послание
Date date = new Date(1633072800L * 1000);

И в итоге получаем:

Markdown
Скопировать код
Java Date Object (📅): "Tue, 01 Oct 2021 00:00:00 GMT"
// Тайна отгадана! 🎉

Будьте бдительны и учитывайте совместимость: как справиться со сложными случаями

Перебирая временные метки и даты, стоит быть настороже и представлять все возможные нюансы, особенно при работе с нестандартными случаями и соблюдении совместимости.

Если UNIX представлен в виде строки

Иногда Unix timestamp записывают в виде строки. Не забывайте об способе преобразования строки в числовой формат перед конвертацией:

Java
Скопировать код
String unixTimestampString = "1633072800";
long unixTimestamp = Long.parseLong(unixTimestampString); // Преобразовываем строку в число
Date parsedDate = new Date(unixTimestamp * 1000L); // Получаем готовую к использованию дату!

Путешествие сквозь часовые пояса

Верное обращение с часовыми поясами обеспечивает точное время в любом уголке земного шара:

Java
Скопировать код
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.setTimeInMillis(unixTimestamp * 1000L);
Date utcDate = calendar.getTime(); // Часовые пояса больше не страшны!

Мост между прошлым и настоящим

Гладкий переход между java.util.Date и java.time важен при взаимодействии со старым и новым кодом:

Java
Скопировать код
// Преобразование из java.time.Instant в java.util.Date
Instant instant = Instant.ofEpochSecond(unixTimestamp);
Date convertedDate = Date.from(instant); // Быстро и удобно!

// Преобразование из java.util.Date в java.time.Instant
Instant convertedInstant = convertedDate.toInstant(); // И обратно, без сложностей!

Не бойтесь экспериментировать с библиотекой ThreeTen-Extra

Если вам требуется более глубокое взаимодействие с датами и временем, чем то, что предоставляет стандартный java.time, воспользуйтесь возможностями библиотеки ThreeTen-Extra:

Java
Скопировать код
// Сложные задачи? Нет проблем!
Period tenDays = Period.ofDays(10);

Углубляясь в мир работы с датами и временем, не забывайте о множестве утилит, созданных для поддержки ваших запросов.

Полезные материалы

  1. java.time (Java Platform SE 8) — Официальная документация Java по классам Date и Time.
  2. Epoch Converter – Unix Timestamp Converter — Инструмент для работы с Unix timestamps и понимания времени Epoch.
  3. Instant (Java Platform SE 8) — Всё, что нужно знать об Instant, включая методы работы с временными метками.
  4. Getting "unixtime" in Java – Stack Overflow — Обсуждения сообщества о преобразовании Unix времени в объекты Java Date.
  5. SimpleDateFormat (Java Platform SE 7) — Инструкция по использованию SimpleDateFormat.
  6. Joda-Time – Home — Joda-Time для тех, кто ищет баланс между старым и новым.
  7. DateTimeFormatter (Java Platform SE 8) — Правила работы с DateTimeFormatter для форматирования и анализа дат в Java 8.