获取当前时间 到 晚上 0 点 的秒数。
思路1: 每天的秒数是固定的,60*60*24=86400,获取当天已经过的秒数,相减即可。
int second = 86400 - LocalTime.now().toSecondOfDay();
思路2:使用时分秒计算出当天已经过的秒数。第一种也是按此实现的
Calendar instance = Calendar.getInstance();
int secondOfDay = instance.get(Calendar.HOUR_OF_DAY)*3600+
instance.get(Calendar.MINUTE)*60+
instance.get(Calendar.SECOND);
int second = 86400 - secondOfDay;
思路3:时间戳是从 0 开始计算的,我们所在东八区是在此基础上减8小时(28800000ms)
int secondOfDay = (int) (System.currentTimeMillis() +28800000)%86400000;
int second = 86400 - secondOfDay/1000;
如果你需要指定Redis中key在指定时间过期,则可以
expireat key timestamp
获取零点的时间戳
LocalDate localDate = LocalDate.now().plusDays(1);
Instant instant = localDate.atStartOfDay()
.atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
如果你使用的redis版本为6.x,则
set name 123 EXAT timestamp