2016-05-09 3 views
2

私のコードに24 * 60 * 60 * 1000を書きたくないのですが、代わりに読みやすい静的DAY変数を使用します。Javaには、1日のグローバル変数がありますか?

私は自分自身が

private static final long DAY = 24*60*60*1000; 

を書き込むことによって、変数を定義することができることを知っているが、これは基本的な機能のように私には思えます。それはどこか標準ライブラリでカバーされていますか?

+6

あなたは1日の長さが厳密には固定されていないことは知っていますか? – Tunaki

+0

@俊明:はい、私のユースケースでは、逸脱は関係ありません。 Javaに実際に特定の日の長さを提供できる組み込み関数がある場合、私はそれを知っていることにも満足しています。 – Christian

+1

JDKには、日々の機能(特にJava 8の場合)があります。あなたが持っているものは基本的ではない、それは悪いです。 – Kayaman

答えて

3

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ナノ秒を加えて格納されます。

戻り値:持続時間の長さの全体秒の部分、 正または負

0

ジャワ8可能性がjava.time.Duration.ofDays(1).toMillis()あろう。

0

最も簡単な解決策は、質問のコード例に示すように変数を作成することです。何もインポートする必要はありません。

0

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は、常に、返されることです。

関連する問題