如何从Long
或LocalDateTime
实例中将纪元值提取到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。 最佳答案
LocalDate
和LocalDateTime
类不包含有关时区或时间偏移的信息,如果没有此信息,则自纪元起的秒数将不明确。但是,对象有几种方法可以通过传递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();