Java で秒数を ISO_8601/Duration に変換したいと思います。
http://en.wikipedia.org/wiki/ISO_8601#Durations
すでに組み込まれている既存の方法はありますか?
Java で秒数を ISO_8601/Duration に変換したいと思います。
http://en.wikipedia.org/wiki/ISO_8601#Durations
すでに組み込まれている既存の方法はありますか?
JodaTimeライブラリの Period オブジェクトを使用することをお勧めします。次に、次のようなメソッドを記述できます。
public static String secondsAsFormattedString(long seconds) {
Period period = new Period(1000 * seconds);
return "PT" + period.getHours() + "H" + period.getMinutes() + "M" + period.getSeconds() + "S";
}
ISO 8601 では期間文字列の個々のフィールドがオーバーフローすることを許可しているため、秒数の先頭に「PT」を追加し、「S」を追加するだけです。
int secs = 4711;
String iso8601format = "PT" + secs + "S";
これにより、「PT1H18M31S」と同等の「PT4711S」が出力されます。