12

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

4

6 回答 6

15

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

  • 在 12 小时模式下:
    • 非空时使用 getFormat12Hour() 返回的值
    • 否则,非空时使用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。)

于 2014-02-20T22:29:41.283 回答
6

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

textClock.setFormat12Hour("kk:mm");
于 2018-01-04T09:10:47.513 回答
3

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

mTextClock.setFormat24Hour(format); 
于 2015-03-03T09:44:54.427 回答
2

对于科特林

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

mTextClock.format12Hour = "kk:mm"
于 2021-07-27T10:14:45.783 回答
1

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

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

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

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

这就是它的能力——显示时间日期。如果您的意思是“与当前日期不同的日期”,则必须坚持简单TextView并手动格式化日期字符串。

于 2013-03-12T18:30:17.910 回答
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 个字符

于 2016-06-16T16:37:38.493 回答