Java DateTimeFormatter从星期一开始的一周

问题描述 投票:0回答:1

我正在尝试使用DateTimeFormatter格式化当前日期,我几乎可以得到所需的信息,但是我的问题似乎是星期几是从星期日开始枚举的,而不是星期一。因此,例如,如果我在星期二运行以下代码

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter;
final LocalDateTime currentTime = LocalDateTime.now()
def DATE = currentTime.format(DateTimeFormatter.ofPattern("YYYY'cw'w'd'e"))

我希望输出:2020cw10d2,但是我得到的实际输出是2020cw10d3。里面有一个localized day of week模式DateTimeFormatter文档,这是e/c选项,但是,在我看来,它没有任何改变。我位于欧洲(GMT + 1),星期几从星期一开始。我使用的服务器也位于同一时区,但是在台式机和服务器上仍得到相同的输出。我究竟做错了什么?有没有办法枚举DateTimeFormatter中从星期一开始的几周?

java groovy datetime-format
1个回答
0
投票

您可以使用DateTimeFormatterwithLocale设置语言环境:

currentTime.format(DateTimeFormatter.ofPattern("YYYY'cw'w'd'e").withLocale(Locale.UK));

或将其作为第二个参数传递给ofPattern

currentTime.format(DateTimeFormatter.ofPattern(“ YYYY'cw'w'd'e”,Locale.UK))]

但是,格式化程序默认情况下应该使用您自己的语言环境,因此它做了您不期望的事情很奇怪。

UK语言环境从星期一开始算起工作日,因此,如果您只想以这种特定方式格式化工作日,则可以改用。

© www.soinside.com 2019 - 2024. All rights reserved.