巧用Java Calendar日历工具类获取距离第二天的时间

上一家公司里遇到这么个需求,在明天0点根据操作特定数据,当时没有使用批处理,因为该操作仅仅需要执行这么一次。所以我们考虑了redis来设置一个定时key/value来实现这一操作,然而定时key/value需要设置多久执行,由于是第二天0点,所以使用了以下代码获取距离第二天0点的一个秒数,这里不多做阐述,直接上代码,具体说明见注释或者在评论区讨论。

Calendar cal = Calendar.getInstance();
// 此处有坑,这个DayOfYear的声明并不是今年的第几天,这里我测试出来的是今天之后的第几天,不要强行翻译理解
cal.add(Calendar.DAY_OF_YEAR, 1);
// 一天内的第几个小时
cal.set(Calendar.HOUR_OF_DAY, 0);
// 小时内的多少分钟
cal.set(Calendar.MINUTE, 0);
// 分钟内的多少秒
cal.set(Calendar.SECOND, 0);
// 秒里的多少毫秒
cal.set(Calendar.MILLISECOND, 0);
// 内容打印
System.out.println(cal.getTimeInMillis());
System.out.println(System.currentTimeMillis());
System.out.println(cal.getTimeInMillis() - System.currentTimeMillis());
// 计算
long l = (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
System.out.println(l);

最终得到的这个小写L变量就是距离第二天0点的一个秒数了。不过此处计算的时候是直接毫秒数相减除以1000得到的秒数,如此做法可能会有距离第二天0点毫秒级别的差值,如果不在意即可使用,如果硬性要求必须0点之后才能执行,那么可以在除完之后手动将变量L+1即可保证时间线控制在0点之后±N毫秒时间线内

如果需要获取离第二天时间多少分钟的话需要在计算结果之后继续计算(除以60)即可。

该文章仅供参考,如有错误或缺漏欢迎各位指点迷津。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值