如何从LongLocalDateTime实例中将纪元值提取到LocalDate中?我试过了
以下内容,但它给了我其他结果:

LocalDateTime time = LocalDateTime.parse("04.02.2014  19:51:01", DateTimeFormatter.ofPattern("dd.MM.yyyy  HH:mm:ss"));
System.out.println(time.getLong(ChronoField.SECOND_OF_DAY)); // gives 71461
System.out.println(time.getLong(ChronoField.EPOCH_DAY)); // gives 16105

我想要的只是本地日期时间1391539861的值"04.02.2014 19:51:01"
我的时区是带有夏令时的Europe/Oslo UTC + 1。

最佳答案

LocalDateLocalDateTime类不包含有关时区或时间偏移的信息,如果没有此信息,则自纪元起的秒数将不明确。但是,对象有几种方法可以通过传递ZoneId实例将其转换为具有时区的日期/时间对象。

LocalDate

LocalDate date = ...;
ZoneId zoneId = ZoneId.systemDefault(); // or: ZoneId.of("Europe/Oslo");
long epoch = date.atStartOfDay(zoneId).toEpochSecond();

LocalDateTime
LocalDateTime time = ...;
ZoneId zoneId = ZoneId.systemDefault(); // or: ZoneId.of("Europe/Oslo");
long epoch = time.atZone(zoneId).toEpochSecond();

10-06 05:34