java获取当前时间到凌晨0点的秒差

mac2026-08-10  5

这几天做一个每日分享给予奖励的一个需求,用户每天可以分享多次,考虑的不需要入库,将用户的分享次数用redis记录,每天凌晨0点删除key

翻阅了好几篇文章,看到几个坑,分享一下

public Long getSecondsTobeforedawn() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_YEAR, 1); // 坑就在这里 cal.set(Calendar.HOUR, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.MILLISECOND, 0); return (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000; }

上面这段代码存在一个问题,就是如果当前时间超过中午12:00,则返回的结果是当前时间到第二天中午12:00的秒数; 如果当前时间不超过中午12:00,则返回的结果是到第二天凌晨的秒数

解决方案

public Long getSecondsTobeforedawn() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_YEAR, 1); // 改成这样就好了 cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.MILLISECOND, 0); return (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000; }
最新回复(0)