TGViewer
Android Broadcast Android Broadcast @android_broadcast · 14.6K subscribers
Post #8708 6.41K
🤖 Форматируйте дату и время на основе настроек пользователя

В большинстве приложений приходится выводить время и дату, но в каком формате сделать это правильнее всего? Логично использовать формат, который применяется для локали пользователя, но в настройках системы пользователь может указывать формат времени и даты для отображения, а значит, ему хотелось бы видеть такой формат везде. Используйте класс android.text.format.DateFormat (ВАЖНО не путать с одноименным классом из пакета java.text)
// Получаем текущую дату и время
val currentDate: Date = ...

// Получаем форматтер для даты, который учитывает региональные настройки пользователя
val dateFormatter: java.text.DateFormat = android.text.format.DateFormat.getDateFormat(context)
// Форматируем дату
val formattedDate = dateFormatter.format(currentDate)


// Получаем форматтер для времени, который учитывает настройку 12/24-часового формата
val timeFormatter = android.text.format.DateFormat.getTimeFormat(context)
// Форматируем время
val formattedTime = timeFormatter.format(currentDate)


// Получение порядка дня, месяца, года, который определил пользователь
// Например ['d', 'M', 'y']
val char[] = android.text.format.DateFormat.getDateFormatOrder(context)


val is24Hour = android.text.format.DateFormat.is24HourFormat(context)
// Выбираем шаблон форматирования времени
val pattern = if (is24Hour) "HH:mm" else "hh:mm a"
// Форматируем время согласно выбранному шаблону
val formattedTime = DateFormat.format(pattern, currentDate)


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

Если вы не хотите работать со старым Date API, которое есть с самых первый версий Java, то можно получить шаблон для форматирования времени на основе настроек пользователя с помощью android.text.format.DateFormat.getBestDateTimePattern()
// Получаем шаблон форматирования для времени. В данном случае шаблон "hm" используется для получения
// подходящего шаблона, который учитывает настройки пользователя (12/24-часовой формат).
val locale = Locale.getDefault()
val pattern: String = android.text.format.DateFormat.getBestDateTimePattern(locale, "hm")

// Создаем DateTimeFormatter из Java 9 Date Time API
val dateTimeFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern(pattern, locale)

// Пример форматирования текущего времени с использованием DateTimeFormatter
val formattedTime: String = LocalTime.now().format(dateTimeFormatter)
println("Отформатированное время: $formattedTime")


#android #лучшиепрактики
  • 👍 61
  • 🤯 6
  • 👎 5
More from @android_broadcast
  1. Oct 14, 2026#видеозаписи #МобильныйВторник Осенний Mobius — уже на следующей неделе! А сегодня мы откр…
  2. Oct 14, 2026🔐 Волна утечек в Японии: эндпоинты и ключи API достают из публичных приложений 8 октября…
  3. Oct 14, 2026🛒 Google Play: свои вайб-код приложения можно ставить на устройство без аккаунта разработ…
  4. Oct 13, 2026⭐️🤖 Gemini 4 Argon пришёл в Android-разработку Google открыл Android-разработчикам свою н…
  5. Oct 13, 2026🤖 Keep-аннотации R8 вместо ручных -keep правил: вышел AndroidX Annotation Keep Недавно пи…
  6. Oct 13, 2026🤖 Googlebook получил Linux-терминал: Debian в VM для кода и AI-агентов Google выкатил пре…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →