java - 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
了原来的时区?
我怎么会在乎呢?
解决方案
您正在使用LocalDateTime
,它不包含时区 - 请参阅API:
ISO-8601 日历系统中没有时区的日期时间,例如 2007-12-03T10:15:30。
您想改用ZonedDateTime。
推荐阅读
- python - 代码改进
- c# - WCF url 允许用户不输入参数
- python-3.x - TypeError:initial_value 必须是 str 或 None,而不是 _io.BytesIO
- html - Css 代码不能应用于标签
- r - R,fread CSV - 如何维护单元格值中的换行符?
- javascript - Chart.js 如何为每个数据集设置 cutoutPercentages
- django - Heroku 部署成功,但未找到模块
- sql - 确定具有多个设备的表中设备的某些状态的持续时间
- java - 使用 RESTful Web 服务:控制器 Springboot 错误
- apache - .htaccess - 一个特定域的 SSL redicect 条件不起作用