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

时间:2013-03-12 17:08:04

标签: android time 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" />

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

6 个答案:

答案 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)

第一个问题:

我刚检查过它,设置的时间已经确定:

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

如上所述,当您向用户提供选择并且您不会强迫他使用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"