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

lit*_*326 9 time android clock

我无法尝试以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" />
Run Code Online (Sandbox Code Playgroud)

还可以使用TextClock显示日期吗?

Mic*_*per 12

如果您的系统处于12小时模式,则不必编写子类来获得所需的内容.该JavaDoc中说:

  • 在12小时模式中:
    • 当非null时,使用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" />
Run Code Online (Sandbox Code Playgroud)

(顺便说一下,正如其他人所说的那样,强制格式应该谨慎使用.如果你的用户需要一个24小时制的时钟,他们会在他们的系统偏好中指定这个.而且应用程序强制使用数字格式,颠倒的日期格式用户,比如MM/dd/yyyy,邀请一星级评级(在这种情况下,除了美国和菲律宾用户),所以你正在使用它是一件好事MMM!你仍然会更好地使用getBestDateTimePattern(),但是,我相信,需要继承TextClock.)


小智 5

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

textClock.setFormat12Hour("kk:mm");
Run Code Online (Sandbox Code Playgroud)


sas*_*oar 1

是否以 12 小时或 24 小时格式显示时间取决于系统设置。也许您的 Android 设备或模拟器设置为 12 小时格式。这就是为什么你的android:format24Hour被忽略。如果您想通过覆盖系统设置(我不推荐)来显示 24 小时格式,请添加android:format12Hour="MMM dd, yyyy k:mm"为另一个属性。

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

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

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

这就是它的能力——显示时间日期。如果您的意思是“当前日期之外的另一个日期”,则必须坚持使用简单的方法TextView并手动格式化日期字符串。