我无法抽出时间以24小时格式显示。我已经让它在另一个时区显示时间,但我不能让它以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显示日期吗?
答案 0 :(得分:11)
如果您的系统处于12小时模式,则不必编写子类来获得所需内容。 JavaDocs说:
- 在12小时模式下:
- 非空
时使用getFormat12Hour()返回的值- 否则,在非null
时使用getFormat24Hour()返回的值- 否则,请使用适合用户区域设置的默认值,例如HH:mm
因此,我希望其中的最后一行使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。)
答案 1 :(得分:3)
而不是在xml中设置时间格式我建议使用java文件,即
mTextClock.setFormat24Hour(格式);
答案 2 :(得分:2)
我的设备使用12h格式。为了强制它使用24小时格式,我写这个:
textClock.setFormat12Hour( “KK:MM”);
答案 3 :(得分:1)
是否以12或24小时格式显示时间取决于系统设置。也许您的Android设备或模拟器设置为12小时格式。这就是为什么忽略android:format24Hour
的原因。如果您想通过覆盖系统设置(我不推荐)来显示24小时格式,请添加android:format12Hour="MMM dd, yyyy k:mm"
作为另一个属性。
但是,始终建议根据系统设置显示时间和日期。如果您的应用中存在其他一些(例如布局)约束,需要单独处理12小时或24小时模式,您可以通过调用is12HourModeEnabled()
或is24HourModeEnabled()
来动态检查设置。 {1}}。
关于第二个问题,docs说
TextClock可以将当前日期和/或时间显示为格式化 字符串。
这就是它的能力 - 显示时间和日期。如果您的意思是“另一个日期而不是当前日期”,您必须坚持使用简单的TextClock
并手动设置日期字符串格式。
答案 4 :(得分:0)
第一个问题:
我刚检查过它,设置的时间已经确定:
如上所述,当您向用户提供选择并且您不会强迫他使用ex时,它会更好。你最喜欢的格式。
第二个问题:
是的,确实如此。你只需要使用&#34; android:format12Hour&#34;和/或&#34; android:format24Hour&#34;。
android:format12Hour="MMM dd, yyyy"
android:format24Hour="MMM dd, yyyy"
MMM 表示一个月的3个字符的名称
dd 表示一天有2个字符
yyyy 表示一年有4个字符
答案 5 :(得分:0)
对于 Kotlin
我使用此行将时间格式设为 24 小时,并且运行良好。
mTextClock.format12Hour = "kk:mm"