Преобразование миллисекунд в форматированное время в Java

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

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

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

Чтобы преобразовать временные метки из миллисекунд в форматированную дату и время на Java, применяется SimpleDateFormat:

Java
Скопировать код
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String время в форматированном виде = sdf.format(new Date(System.currentTimeMillis()));
System.out.println(время в форматированном виде); // Вывод: "2023-01-28 13:45:30"

С помощью класса SimpleDateFormat можно применить шаблон форматирования к объекту Date, полученному из текущего времени в миллисекундах.

Кинга Идем в IT: пошаговый план для смены профессии

Применение шаблонов SimpleDateFormat

SimpleDateFormat использует определенные символы шаблона для форматирования даты и времени. Вот краткий справочник символов:

  • yyyy: Год.
  • MM: Месяц.
  • dd: День.
  • HH: Часы в 24-часовом формате.
  • mm: Минуты.
  • ss: Секунды.
  • SSS: Миллисекунды (несмотря на то, что их не просто заметить).
Java
Скопировать код
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); // Крайне рекомендуется для однозначности!

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

Переход к java.time (с Java 8)

С момента выпуска Java 8 стало предпочтительнее использовать пакет java.time. Вот обновленный способ:

Java
Скопировать код
Instant instant = Instant.ofEpochMilli(System.currentTimeMillis());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("UTC"));
String время в форматированном виде = formatter.format(instant);
System.out.println(время в форматированном виде); // Вывод: "2023-01-28 13:45:30" – Возможно ли путешествие во времени?

DateTimeFormatter поддерживает неизменяемость и обеспечивает безопасность в многопоточном режиме.

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

Преобразуем сложно воспринимаемые цифровые метки времени в миллисекундах в понятный каждому язык:

Markdown
Скопировать код
Загадочные числовые коды (👽📜): 1619208000000

Используем SimpleDateFormat в роли переводчика:

Java
Скопировать код
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String времяЗемли = sdf.format(new Date(1619208000000L));

И получаем временную метку, понятную любому землянину 🌍:

Markdown
Скопировать код
Часы Земли (🌍🕓): "16:00:00"

Учет исключений и специальных случаев

Форматирование временных меток – это задача, в которой есть свои сложности. Аргументы могут быть некорректны, уходить за пределы диапазона, часовые пояса могут вносить свои коррективы. Чтобы избежать проблем:

  • Проверяйте входные данные на правильность.
  • Внимательно относитесь к крайним значениям и ограничениям используемых API.
  • Корректно обрабатывайте часовые пояса, особенно в случае создания международных приложений.

Не забывайте о блоке try-catch для обработки исключений.

Оптимизация производительности и изучение альтернатив

Для повышения производительности рекомендуется повторное использование объектов Date и SimpleDateFormat, что приводит к уменьшению нагрузки на сборщик мусора.

Java
Скопировать код
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); // Ведь это международный стандарт!

Если вы хотите использовать сторонние библиотеки, Joda-Time или Apache Commons Lang предлагают более удобные инструменты для работы со временем.

Java
Скопировать код
String formattedDuration = DurationFormatUtils.formatDurationHMS(timeMillis);
System.out.println(formattedDuration); // Вывод: "1:23:45.678", каждая миллисекунда важна!

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

  1. java.time (Java SE 8) — базовый документ для работы с датами и временем.
  2. SimpleDateFormat (Java SE 7) — руководство по SimpleDateFormat в Java 7.
  3. Java SimpleDateFormat – Форматирование даты Java — подробное руководство по форматированию времени на Java.
  4. Обсуждаем время — введение в новую эру Date/Time API Java 8.
  5. Будьте настороже! | Cloudflare — подборка наиболее полезных примеров работы с SimpleDateFormat.
  6. Понимание даты и времени в Java SE 8 — блог Oracle, объясняющий работу с датами и временем в Java SE 8.