在java中,获取某天是一年中第几周,代码如下:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parse = simpleDateFormat.parse("2022-12-31 00:00:00");
Calendar instance = Calendar.getInstance();
instance.setTime(parse);
System.out.println(instance.get(Calendar.WEEK_OF_YEAR));
2022-12-31的结果是:53
shell中获取周数,代码如下:
date -d "2022-12-31 00:00:00" +%U
2022-12-31的结果是:52
导致结果差异的原因是:
- java中2022-01-01是从第1周开始的,而shell中2022-01-01是从第00周开始,而2023年开始,都是从第1周开始。
- 从日历上看,2022-01-01是周六,理论上应该算是2021年的最后一周,为了表示新的一年,java把这一天作为第一周,shell把这一天设置成了第0周。
- 2023年,都是从第一周开始算起。