ミリ秒を時間に変換する際の注意点

ミリ秒を例えば "09:30:30" のような文字列に変換する必要があるときにはDateSimpleDateFormatを使います。

使い方は次のようになります。

Date date = new Date(System.currentTimeMillis());
DateFormat formatter = new SimpleDateFormat("HH:mm:ss:SSS");
String time = formatter.format(date);

これがミリ秒を文字列に変換する方法です。

これだけですが、1つ注意しなくてはいけないことがあります。

それはDateは協定世界時(UTC)での1970年1月1日9時からの経過ミリ秒(通称UNIX時間)を表すということです。

純粋に"2016/12/02"のような日付を表示するときは上記の方法を使って問題ないですが、ビデオの再生時間などを表示したい場合などは上の方法を使うと問題が生じます。

例えば1000ミリ秒を上の方法で文字列に変換すると"09:00:01:000"になってしまいます。

これを回避するにはDateSimpleDateFormatを使わずに次のようにする必要があります。

long mills = 1000 * 1000 * 60;
long second = (mills / 1000) % 60;
long minute = (mills / (1000 * 60)) % 60;
long hour = (mills / (1000 * 60 * 60)) % 24;
String time = String.format("%02d:%02d:%02d:%d",
					hour, minute, second, mills % 1000);

このようにミリ秒から時間、分、秒を求めてから、Stringクラスのformatメソッドを使えばOKです。

以上、ミリ秒を時間に変換する方法でした。では、また!

関連項目
プライバシーポリシー