私のコードに24 * 60 * 60 * 1000
を書きたくないのですが、代わりに読みやすい静的DAY
変数を使用します。Javaには、1日のグローバル変数がありますか?
私は自分自身が
private static final long DAY = 24*60*60*1000;
を書き込むことによって、変数を定義することができることを知っているが、これは基本的な機能のように私には思えます。それはどこか標準ライブラリでカバーされていますか?
私のコードに24 * 60 * 60 * 1000
を書きたくないのですが、代わりに読みやすい静的DAY
変数を使用します。Javaには、1日のグローバル変数がありますか?
私は自分自身が
private static final long DAY = 24*60*60*1000;
を書き込むことによって、変数を定義することができることを知っているが、これは基本的な機能のように私には思えます。それはどこか標準ライブラリでカバーされていますか?
java.time
パッケージのDuration APIをJava 8 java.time.Duration.ofDays(1).getSeconds()
で試してみることができます。
だけのpublic staticフィールドにそれを格納します。
public static final long SECONDS_IN_DAY = Duration.ofDays(1).getSeconds()
興味のあるあなたの方法は、ofDays(long)
method:
は、標準的な24時間の日数を表す期間 を取得します。秒は であり、1日の標準定義に基づいて計算されます。毎日 は86400秒で、24時間を意味します。第2の フィールドのナノ秒はゼロに設定されます。
パラメータ:日 - 正または負の日、
戻り値の数: 期間、ない
はnull例外:はArithmeticException - 入力日 は期間
フォローの容量を超えた場合に
この期間内の秒数を取得します。 の長さは、秒とナノ秒の2つのフィールドを使用して格納されます。 ナノ秒の部分は、0〜999,999,999の値で、長さを秒単位で調整します( )。合計持続時間は で定義され、このメソッドとgetNano()を呼び出します。
時間は、 タイムライン上の2点間の有向距離を表します。負の持続時間は、秒部分の負の符号 で表されます。 -1ナノ秒の持続時間は、-1秒として に999,999,999ナノ秒を加えて格納されます。
戻り値:持続時間の長さの全体秒の部分、 正または負
ジャワ8可能性がjava.time.Duration.ofDays(1).toMillis()
あろう。
最も簡単な解決策は、質問のコード例に示すように変数を作成することです。何もインポートする必要はありません。
IMOでは、このような定数はまったく必要ありません。 JDK 1以降はTimeUnit
が利用可能です。5は、時間単位の間に期間を変換することが非常に便利であるように:
long millis = TimeUnit.DAYS.toMillis(days);
long seconds = TimeUnit.HOURS.toSeconds(hours);
// or, if you still need a constant
static final long DAY = TimeUnit.DAYS.toMillis(1);
唯一の欠点は、実際の結果が整数でない場合、それは切り捨てられるのでlong
は、常に、返されることです。
あなたは1日の長さが厳密には固定されていないことは知っていますか? – Tunaki
@俊明:はい、私のユースケースでは、逸脱は関係ありません。 Javaに実際に特定の日の長さを提供できる組み込み関数がある場合、私はそれを知っていることにも満足しています。 – Christian
JDKには、日々の機能(特にJava 8の場合)があります。あなたが持っているものは基本的ではない、それは悪いです。 – Kayaman