2013-03-12 3 views
6

У меня возникли проблемы с попыткой получить время для отображения в 24-часовом формате. У меня есть отображение времени в другом часовом поясе, но я не могу его отобразить в 24-часовом формате.Как отображать время в 24-часовом формате с помощью TextClock?

<TextClock 
    android:id="@+id/hk_time" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:timeZone="GMT+0800" 
    android:format24Hour="MMM dd, yyyy k:mm" /> 

Также возможно показать дату с помощью TextClock?

ответ

1

Отображается ли это время в 12- или 24-часовом формате в зависимости от настроек системы. Возможно, ваше устройство Android или эмулятор настроено на 12-часовой формат. Вот почему ваш android:format24Hour игнорируется. Если вы хотите показать 24-часовой формат, перезаписав системный параметр (который я бы не рекомендовал), добавьте android:format12Hour="MMM dd, yyyy k:mm" в качестве другого атрибута.

Однако рекомендуется указывать время и дату в соответствии с настройками системы. Если в приложении есть некоторые другие ограничения (например, макет), которые требуют отдельной обработки 12-часового или 24-часового режима, вы можете динамически проверить настройку кода, вызвав is12HourModeEnabled() или is24HourModeEnabled() на TextClock.

Для вашего второго вопроса, то docs сказать

TextClock может отображать текущую дату и/или время в виде форматированного строки.

и то, что она способна - отображать то время и дату. Если вы имеете в виду «другую дату, чем текущую», вам придется придерживаться простого TextView и форматировать дату String вручную.

+0

Как я могу изменить его, чтобы добавить дату? – littledevils326

+0

Я не уверен в вашем понимании «даты», но если вы имеете в виду день, месяц и год, разве это уже не включено в ваш формат «MMM dd, yyyy k: mm»? – saschoar

9

Если ваша система находится в 12-часовом режиме, вам не нужно писать подкласс, чтобы получить то, что вы хотите. JavaDocs говорят:

  • В 12-часовой режим:
    • Используйте значение, возвращенное getFormat12Hour(), когда ненулевой
    • В противном случае, используйте значение, возвращаемое getFormat24Hour(), когда не- нуль
    • в противном случае, используйте значение по умолчанию, подходящий для локали пользователя, такие как HH: мм

Поэтому я ожидаю, что последняя строка в этом, чтобы сделать getFormat12Hour() возвращение null и, таким образом, использовать пользовательский getFormat24Hour() формат:

<android.widget.TextClock 
    android:id="@+id/hk_time" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:timeZone="GMT+0800" 
    android:format24Hour="MMM dd, yyyy k:mm" 
    android:format12Hour="@null" /> 

(BTW, как и другие упоминали, принудительные форматы должны использоваться с осторожностью. Если ваши пользователи хотели 24-часовых часов, они бы указали это в своих системных предпочтениях. И приложения, которые форсируют форматированные форматы даты и времени для своих пользователей, например MM/dd/yyyy, предлагают рейтинги одной звезды (за исключением, в данном случае, пользователей из США и филиппинцев), так что хорошо, что вы используете MMM! Вам все равно будет полезно использовать getBestDateTimePattern(), хотя, как мне кажется, потребуется подклассификация TextClock.)

+0

Michael Scheper, мне интересно, как я могу удалить PM или AM из показа в моем текстовом столбце? –

2

вместо заданного формата времени в xml. Я предлагаю использовать с java-файлом i.e

mTextClock.setFormat24Hour (формат);

0

первый вопрос:

Я только что проверил его, и когда на устройстве установлено:

  • формат 12h (US, GB) - TextClock является 12h
  • 24 -h format (Европа) - TextClock is 24h

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

второй вопрос:

Да, это так. Вам просто нужно использовать «android: format12Hour» и/или «android: format24Hour».

android:format12Hour="MMM dd, yyyy" 
android:format24Hour="MMM dd, yyyy" 

МММ означает 3-х символов для имени через месяц

дд средство 2 символов для дня

гггг означает 4-х символов за год

0

устройство при помощи 12-часовой формат. Чтобы заставить его использовать 24-часовой формат, я пишу это:

textClock.setFormat12Hour ("kk: mm");

Смежные вопросы