【问题标题】:How to get the week number from a date string with 2 character output如何从具有 2 个字符输出的日期字符串中获取周数
【发布时间】:2020-04-06 11:27:16
【问题描述】:

我可以使用下面的代码来获得 weekNumber: Int = 1 的输出。但我的用例需要输出为 weekNumber: String= 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());

输出 - weekNumber:Int = 1

【问题讨论】:

  • 看看String.format
  • 输出在哪里?在字符串中?
  • @jhamon - 是的,最好是字符串格式。
  • 顺便说一句,您不需要编写自己的格式模式字符串来解析像20200101 这样的字符串。内置的DateTimeFormatter.BASIC_ISO_DATE 可以做到这一点。
  • 感谢 Ole 的信息。这是一个很好的。

标签: java scala simpledateformat


【解决方案1】:

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

var weekFormat = DateTimeFormatter.ofPattern("ww");
var weekNumber = weekFormat.format(date);

“w”是一年中的第几周,“ww”是带有两位数的一年中的第几周(零填充)。您可以在 API 文档中查看格式化代码列表。 https://docs.oracle.com/javase/10/docs/api/java/time/format/DateTimeFormatter.html

【讨论】:

  • 我觉得值得解释一下,单参数 DateTimeFormatter.ofPattern() 为我们提供了一个具有 JVM 默认语言环境的格式化程序。这意味着它使用此语言环境的周编号方案,就像问题中的代码一样,所以我希望这是理想的。例如,如果我的date 是 2021-01-01,并且我在法国运行此代码,我将得到53。在美国,我得到的是01
猜你喜欢
  • 2019-05-05
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多