一年中的公历周是如何运作的
为什么打印3而不是6
GregorianCalendar calendar = new GregorianCalendar();
System.out.println("time"+calendar.getTime());
System.out.println("week of year "+calendar.WEEK_OF_YEAR);
输出
time Tue Feb 09 12:58:02 IST 2021
week of year 3
你可以在下面搜索框中键入要查询的问题!
为什么打印3而不是6
GregorianCalendar calendar = new GregorianCalendar();
System.out.println("time"+calendar.getTime());
System.out.println("week of year "+calendar.WEEK_OF_YEAR);
输出
time Tue Feb 09 12:58:02 IST 2021
week of year 3
# 1 楼答案
tl;博士
< 2021的ISO 8601 week-based year,从2021年1月4日星期一到2022年1月2日2022年1月2日(包含)。在标准符号中,2021年2月9日是基于周的第六周的第二天星期二:2021:BR/>^}/P>
- 一周是周一周日
- 第一周是日历年的第一个星期四李>
细节
可怕的类
GregorianCalendar
在几年前被现代的java所取代。JSR 310中定义的时间类爪哇。时间
获取当前日期
使用definition of ISO 8601获取基于一周的一年中的一周。在这个定义中:
根据这一定义,以周为基础的一年有52年或更长的时间 整整53周
并获取该日期基于周的年份的年份号。这可能与第一周和最后一周的日历年数不同
例如,2021的ISO 8601周为2021年1月4日开始。2021年2月9日在第6周。参见ISO 8601周2021年的^ {A4}。
# 2 楼答案
^{} 是一个常数,你不能这样使用它
你可能是指
calendar.get(Calendar.WEEK_OF_YEAR)
(今天2月9日,它将打印7,而不是6,因为它是基于1的,而不是基于0的)请注意,正如Basil Bourque给出的好答案所解释的,您应该使用新的DateTime API
# 3 楼答案
java.util
的日期时间API及其格式化APISimpleDateFormat
已过时且容易出错。建议完全停止使用它们,并切换到modern date-time API{a5}很好地解释了如何使用JavaSE8日期时间API。如果您仍然想使用遗留API,您有两个选项:
输出:
第01周的ISO 8601 definition是公历年(即1月)的第一个
Thursday
所在的一周。根据这个定义,第2021周第01周从1月4日开始,因此当前的一周是第六周。