Освой Android играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
TextClock - компонент, который появился в Android 4.2. Находился в разделе Date & Time в старых версиях студии, сейчас отсутствует на панели инструментов. Наследуется от TextView.
Компонент TextClock предназначен для вывода текущей даты и времени в текстовой строке. Причём, элемент сам отслеживает системное время и автоматически меняет показания. Служит отличной заменой для громоздких элементов типа AnalogClock или DigitalClock.
Интерес представляют два атрибута android:format12Hour и android:format24Hour, которые задают шаблон для вывода даты/времени. Так как пользователь может в настройках установить 12- или 24-часовой формат, то можно задать шаблоны для разных форматов. При переключении из одного формата в другой вид TextClock автоматически выведет дату/время в заданном шаблоне.
Разместим на экране два элемента TextClock для экспериментов.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="19dp"
android:text="Часы"
android:textSize="30sp" />
<TextClock
android:id="@+id/textClock1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:format12Hour="hh:mm"
android:format24Hour="EEEE, MMMM dd, yyyy h:mmaa"
android:text="TextClock"
android:textSize="30sp" />
<TextClock
android:id="@+id/textClock2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textClock1"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:clickable="true"
android:format12Hour="h:mm"
android:format24Hour="h:mm"
android:text="TextClock"
android:textSize="40sp" />
</RelativeLayout>
Запустим проект и посмотрим на время. Затем в настройках поменяем формат вывода времени и вернёмся в своё приложение. Убедимся, что теперь выводятся данные при помощи другого шаблона. Текущий формат системного времени можно увидеть в верхней правой части экрана.
В первом случае у первого элемента при 24-формате выводится дата и время по шаблону EEEE, MMMM dd, yyyy h:mmaa. Так как в эмуляторе была выбрана американская локаль, то текст выводится на английском. При переключении в 12-часовой формат наш элемент уже использует шаблон hh:mm. Со вторым элементом вы разберётесь самостоятельно.
Программно узнать текущую дату/время, отображаемые на компоненте, можно через свойство textClock.text (Kotlin).