gpt4 book ai didi

java - 如何获得一年中某一周的年份?

转载 作者:搜寻专家 更新时间:2023-11-01 03:00:54 25 4
gpt4 key购买 nike

我知道 Calendar.WEEK_OF_YEAR 可用于获取给定日期的“一年中的第几周”,但如何获取相应的 YEAR?

我知道 Week of Year is dependent 的定义在 Locale .我最感兴趣的是 DIN 1355-1/ISO 8601/德国解决方案(但我不想让它成为修复实现)

因此 1 月 1 日可能属于:

  • 新年第 (1) 年的第一周:例如 2015-01-01 是 2015 年第 1 周
  • 前一年第 (53) 年的最后一周:例如 2016-01-01 在 2015
  • 年第 53 年的那一周

我的问题是今年如何获得?*

Date date =
Calender calendar = new GregorianCalendar(Locale.GERMAN)
calendar.setTime(date);

int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
int year = ???? <------------

System.out.println(date + " is in " + weekOfYear + " of " + year);

* 解决方案不是:date.getYeardate.getFirstDayOfWeek.getYeardate.getLastDayOfWeek.getYear

最佳答案

java.time

您应该使用 java.time框架内置于 Java 8 及更高版本中。避免使用旧的和臭名昭著的麻烦 java.util.Date/.Calendar 类。

这些新的 java.time 类包括 LocalDate对于没有时间或时区的仅日期值。请注意,您必须指定时区才能确定“今天”,因为世界各地的日期不同时。

ZoneId zoneId = ZoneId.of ( "America/Montreal" );
ZonedDateTime now = ZonedDateTime.now ( zoneId );

IsoFields类根据 ISO 8601 标准提供信息,包括基于周的一年中的一周。

int calendarYear = now.getYear();
int weekNumber = now.get ( IsoFields.WEEK_OF_WEEK_BASED_YEAR );
int weekYear = now.get ( IsoFields.WEEK_BASED_YEAR ); // Answer to Question

接近一年的开始/结束时,基于周的年份可能与日历年相差 ±1。例如,请注意公历和 ISO 8601 日历在 2015 年底的区别:第 52 周和第 1 周变为第 52 周和第 53 周。

enter image description here

enter image description here

关于java - 如何获得一年中某一周的年份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728668/

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