Experiments Never Fail

DateFormat.format では HH:mm ではなく kk:mm を使う

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

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 を使えば」と書いてあるわけですが、いやいやそれじゃユーティリティクラスの役割果たしてないでしょ?と思うところであります。

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

追記 2013.7.24 #

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

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

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

参考 #

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

published at tags: Android Java