web-dev-qa-db-ja.com

TextClockを使用して24時間形式で時間を表示するにはどうすればよいですか?

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を使用して日付を表示することもできますか?

11
littledevils326

システムが12時間モードの場合、必要なものを取得するためにサブクラスを作成する必要はありません。 JavaDocs 言う:

  • 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" />

(ところで、他の人が述べているように、強制形式は注意して使用する必要があります。ユーザーが24時間制を希望する場合は、システム環境設定でこれを指定します。また、数値形式のトプシータービー日付形式を強制するアプリはMM/dd/yyyyのようなユーザーは、1つ星の評価を招待します(この場合、米国とフィリピンのユーザーからのものを除く)。したがって、MMMを使用するのは良いことです!それでもなお良いでしょう getBestDateTimePattern() を使用しないでください。ただし、TextClockのサブクラス化が必要になると思います。)

12
Michael Scheper

xmlで時間形式を設定する代わりに、Javaファイル、つまり

mTextClock.setFormat24Hour(format); 
3
Ajay Pandya

私のデバイスは12時間フォーマットを使用しています。 24時間形式を使用するように強制するには、次のように記述します。

textClock.setFormat12Hour("kk:mm");
2
Dewo

時刻を12時間形式で表示するか、24時間形式で表示するかは、システム設定によって異なります。おそらくあなたのAndroidデバイスまたはエミュレーターは12時間形式に設定されています。そのため、Android:format24Hourは無視されます。システム設定を上書きして24時間形式を表示したい場合(これはお勧めしません)、別の属性としてAndroid:format12Hour="MMM dd, yyyy k:mm"を追加します。

ただし、システム設定に応じて日時を表示することを常にお勧めします。アプリに12時間モードまたは24時間モードの個別の処理を必要とする他の(レイアウトなどの)制約がある場合は、is12HourModeEnabled()またはis24HourModeEnabled()を呼び出すことで、コードで設定を動的に確認できます。あなたのTextClock

2番目の質問に対して、 docs と言います

TextClockは、現在の日付や時刻をフォーマットされた文字列として表示できます。

そしてそれが可能です-時刻の日付を表示します。 「現在以外の日付」を意味する場合は、単純なTextViewに固執し、日付文字列を手動でフォーマットする必要があります。

1
saschoar

最初の質問:

確認したところ、デバイスが設定されている場合:

  • 12時間形式(米国、GB)-TextClockは12時間です
  • 24時間形式(ヨーロッパ)-TextClockは24時間です

上で述べたように、ユーザーに選択肢を与え、ユーザーにexの使用を強制しない方がよいでしょう。あなたの好きなフォーマット。

2番目の質問:

はい、そうです。 「Android:format12Hour」または「Android:format24Hour」、あるいはその両方を使用する必要があります。

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

[〜#〜] mmm [〜#〜]は、月の名前が3文字であることを意味します

dd 1日2文字を意味します

yyyy 1年に4文字を意味します

0
Mike