学而实习之 不亦乐乎

Java 获取当前时间到第二天凌晨 0 点剩余的秒数

2023-08-28 07:59:00

有一个需求就是需要将信息保留到 Redis 中,到第二天凌晨 0 时自动过期,这就需要给 Redis 的 key 设置过期时间,也就是从当前时间到第二天凌晨所剩余的秒数。代码如下:

/**
  * 获取当前时间到第二天凌晨 0 点的秒数
  * @return
  */
public Long getSecondsNextEarlyMorning() {
    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;
}

//cal.set(Calendar.HOUR,0);此方法如果当前时间超过中午12点,则返回的结果是当前时间到明天中午十二点的秒数,如果当前时间不超过中午12:00,则返回的结果是到第二天凌晨的秒数
//cal.set(Calendar.HOUR_OF_DAY, 0);无论当前时间是否超过中午12:00,获取的都是到第二天凌晨的秒数。

Calendar.HOUR:12小时制。
Calendar.HOUR_OF_DAY :24小时制。