如何使用 TextClock 以 24 小时格式显示时间?

问题描述 投票:0回答:7

我在尝试以 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 显示日期吗?

android time clock
7个回答
16
投票

如果您的系统处于 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。)


8
投票

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

textClock.setFormat12Hour("kk:mm");

3
投票

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

mTextClock.setFormat24Hour(format); 

3
投票

对于科特林

我用这条线将时间格式设置为 24 小时,并且工作正常。

mTextClock.format12Hour = "kk:mm"

2
投票

希望这对您有帮助:

<TextClock
    android:id="@+id/tc_main"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:format12Hour="h:mm:ss a - d MMM, yyyy"
    android:format24Hour="k:mm:ss - d MMM, yyyy"
/>

1
投票

是否以 12 小时或 24 小时格式显示时间取决于系统设置。也许您的 Android 设备或模拟器设置为 12 小时格式。这就是为什么你的

android:format24Hour
被忽略。如果您想通过覆盖系统设置来显示 24 小时格式(我不建议这样做),请添加
android:format12Hour="MMM dd, yyyy k:mm"
作为另一个属性。

但是,始终建议根据系统设置显示时间和日期。如果您的应用程序中有一些其他(例如布局)限制需要单独处理 12 小时或 24 小时模式,您可以通过在

is12HourModeEnabled()
上调用
is24HourModeEnabled()
TextClock
来动态检查代码中的设置。

对于你的第二个问题,文档

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

这就是它的功能——显示时间日期。如果您的意思是“当前日期之外的另一个日期”,则必须坚持使用简单的

TextView
并手动格式化日期字符串。


0
投票

第一个问题:

我刚刚检查过,并且在您的设备上设置时:

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

如上所述,最好将选择权交给用户,并且不强迫他使用 ex。你最喜欢的格式。

第二个问题:

是的,确实如此。您只需要使用“android:format12Hour”和/或“android:format24Hour”。

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

MMM 表示月份名称的 3 个字符

dd 表示一天 2 个字符

yyyy 表示一年 4 个字符

© www.soinside.com 2019 - 2024. All rights reserved.