首页 > 解决方案 > Java 时间:没有时区的本地日期时间

问题描述

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

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了原来的时区?

我怎么会在乎呢?

标签: javajava-time

解决方案


您正在使用LocalDateTime,它不包含时区 - 请参阅API

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

您想改用ZonedDateTime


推荐阅读