java .time.LocalDateTime, несколько временных линий? - PullRequest
2 голосов
/ 18 марта 2020

Здесь, в Вашингтоне, D C, 3 ноября 2019 года в 2 часа ночи часы были «перенесены» на 1 час ночи.

Это означает, что местное время было таким:

=== Nov 2nd ===:=== Nov 3rd ===========
               :                        
   9   10  11  12  1   2
---+---+---+---+---+-*-+
               :   +-#-+---+---+---+---
               :   1   2   3   4   5

Итак, если авария произошла в 1:30 утра, когда я записываю ее, должно быть ясно, произошла ли она на первой временной шкале (* там) или на второй (* 1007) * там). Это очень важно для установления sh обязанностей и других юридических обязательств.

При взгляде на java.time.LocalDateTime кажется, что в нем не указано время. Был ли это преднамеренный или недосмотр?

Если временная шкала не указана, есть ли лучший класс Java для хранения локальной даты / времени?

1 Ответ

3 голосов
/ 18 марта 2020

Используйте ZonedDateTime, как уже предложено в комментарии, вы можете попробовать его с базовым временем и добавить несколько минут, чтобы увидеть результат, например:

public static void main(String[] args) {
    // let's take a base time of 1:30 in EST (with daylight saving)
    ZonedDateTime nov3rd2019OneThirtyAM = ZonedDateTime
            .of(2019, 11, 3, 1, 30, 0, 0, ZoneId.of("America/New_York"));
    // add 10 minutes 10 times and print the result each time
    for (int i = 0; i < 100; i += 10) {
        System.out.println(nov3rd2019OneThirtyAM.plusMinutes(i));
    }
}

Вывод такой ( отметьте часть, где к 1:50 добавлено 10 минут (их 2):

2019-11-03T01:30-04:00[America/New_York]
2019-11-03T01:30-04:00[America/New_York]
2019-11-03T01:40-04:00[America/New_York]
2019-11-03T01:50-04:00[America/New_York]
2019-11-03T01:00-05:00[America/New_York]
2019-11-03T01:10-05:00[America/New_York]
2019-11-03T01:20-05:00[America/New_York]
2019-11-03T01:30-05:00[America/New_York]
2019-11-03T01:40-05:00[America/New_York]
2019-11-03T01:50-05:00[America/New_York]
2019-11-03T02:00-05:00[America/New_York]
...