秒数算出するときはDurationがべんり
Cookie#setMaxAge(int)
やHttpSession#setMaxInactiveInterval(int)
のように期間を秒数で受けるようなAPIは少なくありません。旧来のJava7以前であれば、秒数計算をしていたかと思いますが、Java8以降ではjava.time.Duration
を使用して、これをスマートにわかりやすく記述できるようになっています。
環境要件
- OpenJDK JDK 10.0.2+13
デモ
https://repl.it/@yo1000/TimeUnitConversion
従来の書き方(Java7まで)
こんな書き方。よくやってましたよね。
public class Main {
public static void main(String[] args) throws Exception {
long secondsOf30Days = 30L * 24L * 60L * 60L; // days * hours * mins * secs
System.out.println("seconds of 30 days: " + secondsOf30Days);
}
}
Durationを使った書き方(Java8以降)
Duration
を使用すると以下のように書けます。
import java.time.*;
public class Main {
public static void main(String[] args) throws Exception {
long secondsFrom30Days = Duration.ofDays(30).getSeconds();
System.out.println("seconds from 30 days: " + secondsFrom30Days);
}
}
Duration
では、今回の例の他にも、時、分、ミリ秒、ナノ秒も扱えるため、時間範囲の単位変換には便利に使っていくことができます。