Android には android.text.format.DateFormat というユーティリティクラスがあるのですが、これの format メソッド、時刻の24時間形式に対応してません。

```java DateTimeFormatTest.java
long t = System.currentTimeMillis();
Log.d(“By DateFormat”, DateFormat.format(“HH:mm”, t));
Log.d(“By SimpleDateFormat”, new SimpleDateFormat(“HH:mm”).format(new Date(t)));


04-09 22:42:14.435: D/By DateFormat(2860): HH:42 ←あ〜あ
04-09 22:42:14.435: D/By SimpleDateFormat(2860): 22:42


Staclkoverflow とかにも「代わりに SimpleDateToimeFormat を使えば」と書いてあるわけですが、いやいやそれじゃユーティリティクラスの役割果たしてないでしょ?と思うところであります。

<strike>自分の中では、時刻は24h表示がデフォルトなので、「DateFormat クラス使えない子」というレッテルを貼ってしまいました。</strike>

## 追記 2013.7.24
「HH でなく kk が使えるよ」とコメントで教えて頂きました。

```java 
DateFormat.format("kk:mm", t);
new SimpleDateFormat("kk:mm").format(new Date(t));

どうやら SimpleDateFormat でも使えるようなので、「Java で 24h表記の場合は kk」って覚えておけばよさそうです。(k って何の略なの…)

参考

よく見たら、ここの Top Vote にも 「kk 使え」って書いてあったorz

Android
Java

published

Ads

Read more!

amay077

Microsoft MVP(Xamarin). フルリモートワーカー. Geospatial Mobile app developer. Love C#.

amay077 amay077