java - DateTimeFormatter 在格式化后添加一年至今
问题描述
我正在尝试将格式2019-12-30
的日期转换为具有格式的日期,30-12-2019
为此我想到了使用DateTimeFormatter
,为此我有以下代码:
LocalDate date = LocalDate.parse("2019-12-30");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-YYYY");
System.out.println(formatter.format(date));
然而,令我惊讶的是,这会返回一个输出:
30-12-2020
而不是预期的30-12-2019
. 如果日期设置为2019-11-30
,则正确返回30-11-2019
。我做错了什么,但我无法弄清楚到底是什么。有人可以帮忙吗?
解决方案
来自DateTimeFormatter
文档:,表示符号,含义和示例:
Y 基于周的年份 1996 年;96
因此,您正在格式化基于周的年份,而不是常规年份。2019 年 12 月 30 日属于 2020 年的第一周,因此是您的输出。
使用yyyy
(year-of-era) 或uuuu
(year) 代替,YYYY
你会得到 2019 代替。
基本上,YYYY
通常应与w
(week-of-week-based-year) 和E
(day-of-week) 一起使用。
推荐阅读
- c# - 有没有办法在 WPF 中使用带有 HTML 格式的 Textbox/RichTextBox?
- ruby-on-rails - nil:NilClass 的未定义方法“名称”:
- r - 有没有办法在 R 闪亮中应用动态过滤器,类似于在 excel 中的枢轴
- opengl - 当我在 OpenGL 中关闭渲染窗口时,为什么会发生“检测到堆栈粉碎”错误?
- postgresql - 如果插入依赖于先前的记录,如何处理对数据库的并发插入?
- java - 在服务器上以调试模式运行项目时发生 wildfly 超时 [300]
- logging - 如何记录来自 aiohttp 客户端的原始 POST 请求?
- c# - 如何在解决方案文件夹中添加文件?
- java - 整数列表获取方法不返回整数的列表
- node.js - 如何使用 nodejs 在 qlik 应用程序中获取工作表信息