Как узнать текущее время и дату в Android
Как узнать текущее время и дату в приложении для Android?
Вы можете использовать:
В календаре достаточно констант для всего, что вам нужно.
Вы можете ( но больше не должны — смотрите ниже!) Использовать android.text.format.Time :
Из ссылки, указанной выше:
Класс Time — более быстрая замена для классов java.util.Calendar и java.util.GregorianCalendar. Экземпляр класса Time представляет момент времени, указанный с точностью до секунды.
ПРИМЕЧАНИЕ 1. Прошло несколько лет с тех пор, как я написал этот ответ, и речь идет о старом, специфичном для Android, и теперь устаревшем классе. Google теперь говорит, что «[t] его класс имеет ряд проблем, и рекомендуется использовать GregorianCalendar вместо этого».
ПРИМЕЧАНИЕ 2. Несмотря на то, что у Time класса есть toMillis(ignoreDaylightSavings) метод, это просто удобство для перехода к методам, которые ожидают время в миллисекундах. Значение времени с точностью до одной секунды ; доля в миллисекундах всегда 000 . Если в цикле вы делаете
Результирующая последовательность будет повторять одно и то же значение, например 1410543204000 , до тех пор, пока 1410543205000 не начнется следующая секунда, после чего начнется повторение.
Если вы хотите получить дату и время по определенному шаблону, вы можете использовать следующее:
Дата :
Время:
Для тех, кто предпочитает индивидуальный формат, вы можете использовать:
Принимая во внимание, что вы можете иметь шаблоны DateFormat, такие как:
На самом деле, безопаснее установить текущий часовой пояс, установленный на устройстве, с помощью Time.getCurrentTimezone() , иначе вы получите текущее время в UTC.
Затем вы можете получить все нужные поля даты, например:
ОБНОВИТЬ
Как отмечают многие, Google говорит, что у этого класса есть ряд проблем, и его больше нельзя использовать:
Этот класс имеет ряд проблем, поэтому рекомендуется использовать GregorianCalendar.
По историческим причинам при выполнении временных вычислений вся арифметика в настоящее время выполняется с использованием 32-разрядных целых чисел. Это ограничивает достоверный диапазон времени, представляемый с 1902 до 2037 года. Подробности смотрите в статье в Википедии о проблеме 2038 года. Не полагайтесь на это поведение; это может измениться в будущем. Вызов switchTimezone (String) в дату, которая не может существовать, например, в настенное время, которое было пропущено из-за перехода на летнее время, приведет к дате в 1969 году (т.е. -1 или 1 секунда до 1 января 1970 года по Гринвичу). Большая часть форматирования / синтаксического анализа предполагает использование текста ASCII и поэтому не подходит для использования со сценариями, не относящимися к ASCII.
Источник