2016-04-04 16 views
10

LocalDateが与えられたときの終わりを得る方法?LocalDateが与えられた場合の最終日の取得方法は?

私は

LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59)); 

を行うことによって、それを得ることができる。しかし、一日の終わりのための同等の「atStartOfDay」メソッドはありますか?

LocalDate.now().atStartOfDay(); 
LocalDate.now().atEndOfDay(); //doesn't work 
+6

で実装されますが、「一日の終わり」とはどういう意味ですか?翌日の開始から1秒を引いた時刻ですか? 1ミリ秒? 1ナノ秒ですか?なぜ、翌日の始まりを使うのではなく、 '[day、day + 1 [' intervals?店舗が午前8時から午後6時まで開いている場合、表示される終了時間は午後5時59分59秒ではなく午後6時です。 –

答えて

25

ここでは、何が必要に応じて、いくつかの選択肢、以下のとおりです。

LocalDate.now().atTime(23, 59, 59);  //23:59:59 
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999 

しかし、組み込みの方法はありません。

@JBNizetによってコメントされたように、間隔を作成する場合は、深夜までの間隔を使用することもできます。

+0

夏時間はどうですか? –

+0

@MateusViccari LocalDate/LocalDateTimeにはタイムゾーンがないため、DSTルールはありません。あなたが何を求めているのかよくわからない。 – assylias

5

次の日の開始日を取得し、1秒を減算します。これはあなたのために働くはずです。 :

public static void main(String[] args) { 

    LocalDate date = LocalDate.now(); 
    LocalDateTime dt = date.atStartOfDay().plusDays(1).minusSeconds(1); 
    System.out.println(dt); 
} 

O/P:

2016-04-04T23:59:59 
1

これらはLocalTimeで利用できるバリアントであり、通知MIDNIGHTMINは等しいです。参考のため

LocalDate.now().atTime(LocalTime.MIDNIGHT); //00:00:00.000000000 
LocalDate.now().atTime(LocalTime.MIN);  //00:00:00.000000000 
LocalDate.now().atTime(LocalTime.NOON);  //12:00:00.000000000 
LocalDate.now().atTime(LocalTime.MAX);  //23:59:59.999999999 

、これはjava.time.LocalTime

/** 
* Constants for the local time of each hour. 
*/ 
private static final LocalTime[] HOURS = new LocalTime[24]; 
static { 
    for (int i = 0; i < HOURS.length; i++) { 
     HOURS[i] = new LocalTime(i, 0, 0, 0); 
    } 
    MIDNIGHT = HOURS[0]; 
    NOON = HOURS[12]; 
    MIN = HOURS[0]; 
    MAX = new LocalTime(23, 59, 59, 999_999_999); 
} 
関連する問題