2022年Shell获取当前周数和java获取当前周数不一致问题

文章讨论了在Java和Shell中计算日期是一年中第几周时出现的不同结果。Java将2022-01-01视为当年的第一周,而Shell则将其视为2021年的第52周或0周。这种差异源于两者对一周开始的定义不同。2023年起,两者都从第一周开始计算。
摘要由CSDN通过智能技术生成

在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

导致结果差异的原因是:

  1. java中2022-01-01是从第1周开始的,而shell中2022-01-01是从第00周开始,而2023年开始,都是从第1周开始。
  2. 从日历上看,2022-01-01是周六,理论上应该算是2021年的最后一周,为了表示新的一年,java把这一天作为第一周,shell把这一天设置成了第0周。
  3. 2023年,都是从第一周开始算起。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值