2013-03-12 293 views
6

我無法嘗試以24小時格式顯示時間。我有它在另一個時區顯示時間,但我不能讓它以24小時制顯示。如何使用TextClock以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顯示日期嗎?

回答

1

是否顯示12或24小時格式的時間取決於系統設置。也許你的Android設備或模擬器設置爲12小時制。這就是爲什麼你的android:format24Hour被忽略。如果您想通過覆蓋系統設置(我不推薦)顯示24小時制格式,請將android:format12Hour="MMM dd, yyyy k:mm"作爲另一個屬性添加。

但是,總是建議根據系統設置顯示時間和日期。如果您的應用中存在一些其他(例如佈局)約束條件,需要單獨處理12或24小時模式,則可以在TextClock上調用is12HourModeEnabled()is24HourModeEnabled()來動態檢查設置。

你的第二個問題,docs

TextClock可以顯示當前的日期和/或時間格式化字符串 。

這就是它的能力 - 顯示時間日期。如果你的意思是「另一個日期比當前」,你將不得不堅持一個簡單的TextView並手動格式化日期字符串。

+0

我如何改變它添加日期? – littledevils326 2013-03-12 20:52:51

+0

我不確定你對「日期」的理解,但是如果你的意思是日,月,年,那麼你是不是已經包含在你的MMM dd,yyyy k:mm格式中? – saschoar 2013-03-13 13:42:12

9

如果你的系統處於12小時模式,你不必編寫一個子類來獲得你想要的。該JavaDocs說:

  • 在12小時模式:
    • 使用)由getFormat12Hour(返回的值時,非空
    • 否則,使用由getFormat24Hour返回的值()時,非空
    • 否則,使用諸如HH適合於用戶的語言環境的默認值,:毫米

因此,我希望在這最後一行,使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。)

+0

邁克爾謝佩,我想知道如何刪除我的textClock中顯示的PM或AM? – 2014-10-30 18:56:13

2

而不是在xml中設置時間格式我建議使用java文件i。e

mTextClock.setFormat24Hour(format);

0

1問題:

我剛剛檢查了它和您的設備上的設置:

  • 12小時格式(美國,英國) - TextClock爲12h
  • 24 -h格式(歐洲) - TextClock是24小時

如上所述,最好是當你給用戶的選擇,你不會強迫他使用前。你最喜歡的格式。

第二個問題:

是的,它是。你只需要使用「android:format12Hour」和/或「android:format24Hour」。

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

MMM意味着3個字符一個月的名稱

DD指2個字符一天

YYYY意味着4個字符,使用了一年

0

我的設備12h格式。爲了強制它使用24h格式,我寫了這個:

textClock.setFormat12Hour(「kk:mm」);