Получение текущего timestamp в Android: методы и форматы
Быстрый ответ
Чтобы получить актуальную временную отметку, воспользуйтесь методом System.currentTimeMillis()
, который возвращает количество миллисекунд, прошедших с момента начала эпохи Unix.
long timestampMillis = System.currentTimeMillis(); // Временная отметка прямо сейчас
long timestampSeconds = timestampMillis / 1000; // Секунды с начала эпохи Unix
Чтобы представить временную отметку в понятном формате, используйте класс SimpleDateFormat
:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String formattedDate = sdf.format(new Date(timestampMillis)); // Форматируем временную отметку
Если требуется высокая точность и стабильность, например, для временно-зависимых приложений, рассмотрите использование SystemClock.elapsedRealtime()
.
Получение временной отметки в секундах, используя Unix-время
У вас есть прямой доступ к Unix-времени, которое определяется как количество секунд, прошедших с первых секунд 1970 года по UTC, без учета специальных коррекционных секунд.
Быстрое преобразование в Unix-время
long unixTimeSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()); // Преобразуем миллисекунды в секунды
String unixTimeString = Long.toString(unixTimeSeconds); // Переводим в строку для удобства использования
Работа с часовыми поясами
При работе с SimpleDateFormat
не забывайте учитывать часовые пояса – используйте класс TimeZone
, чтобы гарантировать точное соответствие временных отметок.
Обработка исключений
Обязательно обрабатывайте исключения при форматировании и анализе дат. Всегда оборачивайте операции над временем в блок try-catch
для обеспечения стабильности работы приложения.
Визуализация
Представим временную отметку так, будто это был бы дневник времени приложения Android:
Дневник времени Android 🕰️:
| Запись моментов |
| ---------------------- |
| 📆⏰ Уникальная временная отметка |
Продвинутое использование
Рассмотрим несколько советов и подходов для работы с временными отметками.
Отслеживание изменений системного времени
Обеспечьте слушателями широковещательных интентов отслеживание изменений системного времени, чтобы поддерживать согласованность в приложении.
Альтернативы SimpleDateFormat
Используйте класс java.time.format.DateTimeFormatter
из Java 8 Time API в качестве потокобезопасных альтернатив. Он поддерживается на Android.
Использование SystemClock.elapsedRealtime()
Для измерения интервалов и прошедшего времени используйте метод SystemClock.elapsedRealtime()
, так как он обеспечивает монотонные часы, не подверженные изменениям системного времени.
Полезные материалы
- System | Android Developers — Официальная документация по работе с системным временем для Android.
- java – Sort a Map<Key, Value> by values – Stack Overflow — Обсуждения по теме работы с временными отметками, несмотря на их заблуждающее название.
- SimpleDateFormat (Java Platform SE 7 ) — Детальная информация по работе с форматированием дат.
- Tutorial | DigitalOcean — Руководство по работе с датой и временем в Java.
- java.lang.System.currentTimeMillis java code examples | Tabnine — Примеры использования метода
System.currentTimeMillis()
. - java.sql.Timestamp#valueOf — Примеры использования метода
Timestamp.valueOf
в приложениях на Java.