在 1 月首次使用 DateTimeFormatter 会导致年份值无效

Posted

技术标签:

【中文标题】在 1 月首次使用 DateTimeFormatter 会导致年份值无效【英文标题】:Using DateTimeFormatter on january first cause an invalid year value 【发布时间】:2017-10-20 10:30:55 【问题描述】:

当我在设置为 2017 年 1 月 1 日的 LocalDate 上使用 DateTimeFormatter(下面的代码)时,我以错误的年份值结束。

LocalDate.of(2017,1,1).toString

这将正确显示 2017-01-01 而

LocalDate.of(2017,1,1).format(DateTimeFormatter.ofPattern("dd MMM YYYY"))

给我: 1 月 1 日。 2016. 你知道为什么会这样吗?

【问题讨论】:

使用y 而不是Y。这是基于周的年。见DateTimeFormatter。我猜@Robby 使用不同的本地位置(星期日是一周的第一天) 谢谢@AxelH,就是这样! 【参考方案1】:

您使用的是“错误”年份。

 Symbol  Meaning            Presentation    Examples  
 ------  -------            ------------    -------  
 y       year-of-era        year            2004; 04  
 Y       week-based-year    year            1996; 96

来源:DateTimeFormatter

这基本上是使用当前一周的第一天而不是实际日期来查看它是哪一年。

其中一个问题是这取决于本地...

你应该使用DateTimeFormatter.ofPattern("dd MMM yyyy")

【讨论】:

以上是关于在 1 月首次使用 DateTimeFormatter 会导致年份值无效的主要内容,如果未能解决你的问题,请参考以下文章

前端框架

StructureMap

Spring

企业框架-Spring

GWPY:发现引力波的机构使用的Python包

学习Spring