Java时间:不带区域的本地日期时间

时间:2019-04-01 11:32:35

标签: java java-time

记录此代码时,我得到两个输出:

private void meth(Date date) {
    LOG.info(
        date.toInstant()
        .atZone(ZoneId.systemDefault())
        .format(DateTimeFormatter.ISO_DATE_TIME));

    LocalDateTime ldt = LocalDateTime.ofInstant(
        date.toInstant(),
        ZoneId.systemDefault()
    );

    LOG.info(ldt.format(DateTimeFormatter.ISO_DATE_TIME));

}

我正在获取这些日志:

2019-04-01 13:13:32.195  INFO --- : 2019-01-01T01:00:00+01:00[Europe/Madrid]
2019-04-01 13:13:32.197  INFO --- : 2019-01-01T01:00:00

ldt失去了原来的时区吗?

我该怎么关心?

2 个答案:

答案 0 :(得分:3)

您使用的是LocalDateTime,其中不包含时区-请参见API

  

ISO-8601日历系统中没有时区的日期时间,例如2007-12-03T10:15:30。

您想改用ZonedDateTime

答案 1 :(得分:1)

LocalDateTime是不带时区的日期时间:

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html