Android には android.text.format.DateFormat
というユーティリティクラスがあるのですが、これの format
メソッド、時刻の24時間形式に対応してません。
//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 を使えば」と書いてあるわけですが、いやいやそれじゃユーティリティクラスの役割果たしてないでしょ?と思うところであります。
自分の中では、時刻は24h表示がデフォルトなので、「DateFormat クラス使えない子」というレッテルを貼ってしまいました。
「HH でなく kk が使えるよ」とコメントで教えて頂きました。
DateFormat.format("kk:mm", t);
new SimpleDateFormat("kk:mm").format(new Date(t));
どうやら SimpleDateFormat でも使えるようなので、「Java で 24h表記の場合は kk」って覚えておけばよさそうです。(k って何の略なの…)
よく見たら、ここの Top Vote にも 「kk 使え」って書いてあったorz