java - DateTimeFormatter 为边缘情况提供错误的格式
问题描述
DateTimeFormatter
根据以下代码段,未提供 2018 年 12 月 30 日和 31 日的正确格式。
final String DATE_FORMAT = "YYYYMM";
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(DATE_FORMAT);
LocalDateTime startDate = LocalDateTime.of(2018,12,29,5,0,0);
System.out.println(startDate.format(dateFormat));
//prints 201812
LocalDateTime startDate = LocalDateTime.of(2018,12,30,5,0,0);
System.out.println(startDate.format(dateFormat));
//prints 201912 <------ should be 201812
LocalDateTime startDate = LocalDateTime.of(2018,12,31,5,0,0);
System.out.println(startDate.format(dateFormat));
//prints 201912 <------ should be 201812
这是预期的行为还是 DateTimeFormatter 存在错误?
解决方案
这是预期的行为。YYYY
代表“week-based-year”,与日历年不同(参见JavaDoc)
您很可能想使用yyyy
,这意味着“时代”
推荐阅读
- angular - 如何在Angular 5 Reactive Forms中将表单控件值传递给自定义验证器函数的参数
- typescript - 任何扩展类类型的类
- javascript - 如何使用 plunker 或 jsfiddle 运行 angular2 代码
- mysql - SQL如何从第2行中减去结果第1行,从第3行中减去第2行
- python - 如何在 Python 中绘制耦合非线性二阶 ODE 的二阶导数?
- php - 如何在学说中使用查询构建器来测试数据库中是否已经设置了两个给定值中的至少一个
- python-3.x - 如何将图像变量应用于经过转换数据训练的 pytorch 神经网络?
- php - 如何使用 Laravel 缓存图像
- python - 在 Python 中写入 csv 文件时如何删除撇号
- thumbnails - 由于对 CDN 的错误请求,Vimeo 播放器没有获得缩略图