2013-03-12 291 views
6

我无法尝试以24小时格式显示时间。我有它在另一个时区显示时间,但我不能让它以24小时制显示。如何使用TextClock以24小时格式显示时间?

<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小时模式,则可以在TextClock上调用is12HourModeEnabled()is24HourModeEnabled()来动态检查设置。

你的第二个问题,docs

TextClock可以显示当前的日期和/或时间格式化字符串 。

这就是它的能力 - 显示时间日期。如果你的意思是“另一个日期比当前”,你将不得不坚持一个简单的TextView并手动格式化日期字符串。

+0

我如何改变它添加日期? – littledevils326 2013-03-12 20:52:51

+0

我不确定你对“日期”的理解,但是如果你的意思是日,月,年,那么你是不是已经包含在你的MMM dd,yyyy k:mm格式中? – saschoar 2013-03-13 13:42:12

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" /> 

(顺便说一句,正如其他人所提到的,强制的格式应小心使用。如果您的用户需要24小时制,他们会在他们的系统偏好中指定此项。而且在其用户上强制使用数字格式的颠覆性日期格式(如MM/dd/yyyy)的应用会邀请一星评级(本例中来自美国和菲律宾用户除外),因此您使用MMM是件好事!你仍然可以使用getBestDateTimePattern(),尽管如此,我相信这将需要继承TextClock。)

+0

迈克尔谢佩,我想知道如何删除我的textClock中显示的PM或AM? – 2014-10-30 18:56:13

2

而不是在xml中设置时间格式我建议使用java文件i。e

mTextClock.setFormat24Hour(format);

0

1问题:

我刚刚检查了它和您的设备上的设置:

  • 12小时格式(美国,英国) - TextClock为12h
  • 24 -h格式(欧洲) - TextClock是24小时

如上所述,最好是当你给用户的选择,你不会强迫他使用前。你最喜欢的格式。

第二个问题:

是的,它是。你只需要使用“android:format12Hour”和/或“android:format24Hour”。

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

MMM意味着3个字符一个月的名称

DD指2个字符一天

YYYY意味着4个字符,使用了一年

0

我的设备12h格式。为了强制它使用24h格式,我写了这个:

textClock.setFormat12Hour(“kk:mm”);