Java 如何从输出为2个字符的日期字符串中获取周数

Java 如何从输出为2个字符的日期字符串中获取周数,java,scala,simpledateformat,Java,Scala,Simpledateformat,我可以使用下面的代码获得weekNumber:Int=1的输出。但是我的用例要求输出为 周数:字符串=01。实现这一目标的最佳有效方式应该是什么 import java.time.format.DateTimeFormatter import java.time.temporal.WeekFields import java.util.Locale import java.time.LocalDate var dateRangeFrom = "20200101" var date :java.

我可以使用下面的代码获得weekNumber:Int=1的输出。但是我的用例要求输出为 周数:字符串=01。实现这一目标的最佳有效方式应该是什么

import java.time.format.DateTimeFormatter
import java.time.temporal.WeekFields
import java.util.Locale
import java.time.LocalDate

var dateRangeFrom = "20200101"
var date :java.time.LocalDate = LocalDate.parse(dateRangeFrom,DateTimeFormatter.ofPattern("yyyyMMdd"))

var weekFields :WeekFields =  WeekFields.of(Locale.getDefault());
var weekNumber :Int = date.get(weekFields.weekOfWeekBasedYear());

输出-周数:Int=1

您可以将DateTimeFormatter与模式
ww
一起使用:

var weekFormat = DateTimeFormatter.ofPattern("ww");
var weekNumber = weekFormat.format(date);
“w”是一年中的一周,“ww”是一年中的一周,有两个数字(零填充)。您可以在API文档中看到格式化代码列表。

查看
字符串。格式
。输出在哪里?在字符串中?@jhamon-是的,最好是字符串格式。另外,您不需要编写自己的格式模式字符串来解析字符串,如
20200101
。内置的
DateTimeFormatter.BASIC\u ISO\u DATE
可以做到这一点。感谢您提供的信息。这是一个很好的例子。我发现值得解释的是,一个arg
DateTimeFormatter.ofPattern()
为我们提供了一个具有JVM默认区域设置的格式化程序。这意味着它使用此区域设置的周编号方案,就像问题中的代码一样,因此我希望这是所需的。例如,如果我的
日期是2021-01-01,并且我在法国运行此代码,我将得到
53
。在美国,我得到的是
01