Как создать переменную LocalDateTime в java? - PullRequest
0 голосов
/ 17 января 2020

если у меня есть только год, месяц и день, как мне инициализировать переменную LocalDateTime? также, если мне нужно будет включить время, я просто установлю его на 00:00:00, большое спасибо!

Ответы [ 2 ]

1 голос
/ 19 января 2020

Изящный путь проходит через LocalDate:

    LocalDateTime dateTime = LocalDate.of(2020, Month.JANUARY, 18).atStartOfDay();
    System.out.println(dateTime);

Вывод из этого фрагмента:

2020-01-18T00: 00

Если у вас есть месяц как число, например, 1 за январь, используйте вместо него LocalDate.of(2020, 1, 18). В остальном то же самое.

Подумайте дважды, прежде чем использовать LocalDateTime. Мы обычно используем дату и время вместе для установления момента времени. LocalDateTime для этого не подходит (некоторые скажут, что не может). Почему и как? Он не знает ни часовой пояс, ни смещение от UT C. Таким образом, любой человек и любой программный продукт, читающий LocalDateTime, могут свободно интерпретировать его в любом часовом поясе, о котором он думает, а не в намеченном. По крайней мере, для 19 из 20 целей лучше использовать ZonedDateTime или OffsetDateTime. Например:

    ZoneId zone = ZoneId.of("America/Recife");
    ZonedDateTime dateTime = LocalDate.of(2020, Month.JANUARY, 18).atStartOfDay(zone);

2020-01-18T00: 00-03: 00 [Америка / Ресифи]

-03:00 между минутами и зоной ID - это смещение от UT C. Теперь мы не оставляем места для неправильного толкования.

0 голосов
/ 17 января 2020

Ниже приведен пример:

import java.time.LocalDateTime;

public class Main {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.of(2020, 1, 17, 6, 30, 20);
        System.out.println("Date and time: " + dateTime);
    }
}

Вывод:

Date and time: 2020-01-17T06:30:20

Для получения более подробной информации перейдите по ссылкам, опубликованным JB Nizet.

...