gpt4 book ai didi

java - 如何使用 GregorianCalendar 在 Java 中获取当前周数和年份?

转载 作者:行者123 更新时间:2023-12-01 17:42:20 26 4
gpt4 key购买 nike

我想获取当前周数和年份。我尝试了以下代码片段

Calendar cal = new GregorianCalendar(Locale.GERMANY);
Date today = new Date();
cal.setTime(today);

int current_week = cal.get(Calendar.WEEK_OF_YEAR)
int year = cal.get(Calendar.YEAR)

今天(2019 年 12 月 31 日)周数为 2020 年 1 月 1 日但上面的代码给出了01 2019

我应该如何获得周数01 2020

这里 01 是周数,2020 是年份

最佳答案

两点:

  1. 周编号因区域设置而异。因此,您正在做正确的事情,在代码中明确指定您想要哪个区域设置的周数(虽然我认为世界上大多数区域设置都同意 2019 年 12 月 31 日是 2020 年的第一周,但同样的协议(protocol)并不扩展到所有日期)。
  2. DateCalendarGregorianCalendar 类设计不佳且早已过时。不要使用其中任何一个。使用 java.time,现代 Java 日期和时间 API。

在代码中:

    Locale userLocale = Locale.GERMANY;
WeekFields weekNumbering = WeekFields.of(userLocale);

LocalDate date = LocalDate.of(2019, Month.DECEMBER, 31);
int currentWeek = date.get(weekNumbering.weekOfWeekBasedYear());
int year = date.get(weekNumbering.weekBasedYear());

System.out.format(userLocale, "Week number: %02d %04d%n", currentWeek, year);

此代码段的输出是:

Week number: 01 2020

如果您不需要数字,而是需要字符串形式的周数,则使用 DateTimeFormatter 会更方便:

    DateTimeFormatter weekFormatter = DateTimeFormatter.ofPattern("ww YYYY", userLocale);
String formattedWeek = date.format(weekFormatter);
System.out.println("Week number: " + formattedWeek);

输出与之前相同。

链接

关于java - 如何使用 GregorianCalendar 在 Java 中获取当前周数和年份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59540467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com