今天在新的需求里面,有这么一个要求,要求设置redis过期时间为当月月底,意思是如果一号存进redis,则过期时间为月底;如果29号存进redis,则过期时间同样为月底。我想的就是获取当前时间,算出当月的月底时间,得到中间的差值,话不多说,上代码。

    /*** 功能描述 //TODO 获取现在到下个月的0点的秒数* @author 王弈程* @date 2021/12/24 15:27* @return: long*/public static long getLastDaySeconds(){//当月最后一天LocalDateTime midnight = LocalDateTime.now().plusMonths(1).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0);return ChronoUnit.SECONDS.between(LocalDateTime.now(),midnight);/*DateTime dateTime = new DateTime().millisOfDay().withMaximumValue();long daySeconds = new Duration(new DateTime(), dateTime).getStandardSeconds();Calendar cDay = Calendar.getInstance();cDay.setTime(new Date());cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));long monthSeconds = (cDay.getTimeInMillis() - System.currentTimeMillis())/1000 + daySeconds;System.out.println("当月剩余秒:" + monthSeconds);return monthSeconds;*/}

这里给大家提供了两种方法,我个人推荐第一种简单明了,求出现在到月底的时间差值,换个说法就是求出现在到下个月的1号凌晨的时间。其中

LocalDateTime.now().是获取现在的时间;plusMonths(1)是加一个月;withDayOfMonth(1)是去这个月第一天的时间;withHour(0).withMinute(0).withSecond(0).withNano(0)是0点0分0秒0毫秒的意思。

如果你想获取每天5点,可以这么写:

LocalDateTime.now().withHour(5).withMinute(0).withSecond(0).withNano(0);

如果你想获取每个小时的第10分钟的时间差值,可以这么写:

LocalDateTime.now().withMinute(10).withSecond(0).withNano(0);

方法教给大家乐,大家可以直接拿走!

Redis设置过期时间为当月月底-----自动计算相关推荐

  1. redis设置过期时间与直接detele key有什么区别

    redis设置过期时间与直接detele key有什么区别 Redis 中设置过期时间和直接删除 key 有以下几点区别: 效率:当使用 key 的过期时间时,Redis 会在 key 过期时自动删除 ...

  2. java redis设置过期时间_Redis的一些核心原理

    点关注,不迷路:持续更新Java相关技术及资讯!!! 一.Redis的单线程和高性能 Redis 单线程为什么还能这么快? 因为它所有的数据都在内存中,所有的运算都是内存级别的运算(纳秒),而且单线程 ...

  3. java如何保证redis设置过期时间的原子性_2020年4月Redis面试题和答案整理

    点关注,不迷路:持续更新Java相关技术及资讯!!! 关注.转发.评论头条号每天分享java 知识,私信回复"源码" 赠送Spring源码分析.Dubbo.Redis.Netty. ...

  4. redis如何设置定时过期_redis补充6之Redis 设置过期时间

    一般情况下,我们设置保存的缓存数据的时候都会设置一个过期时间. Redis 中有个设置时间过期的功能,即对存储在 Redis 数据库中的值可以设置一个过期时间.作为一个缓存数据库,这是非常实用的.如我 ...

  5. java如何保证redis设置过期时间的原子性_分布式锁用 Redis 还是 Zookeeper

    在讨论这个问题之前,我们先来看一个业务场景: 系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单. 由于系统有 ...

  6. java如何保证redis设置过期时间的原子性_redis专题系列22 -- 如何优雅的基于redis实现分布式锁

    几个概念 线程锁:主要用来给方法.代码块加锁.当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段.线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比 ...

  7. redis缓存失效时间设为多少_java操作Redis缓存设置过期时间的方法

    关于Redis的概念和应用本文就不再详解了,说一下怎么在java应用中设置过期时间. 在应用中我们会需要使用redis设置过期时间,比如单点登录中我们需要随机生成一个token作为key,将用户的信息 ...

  8. 如何用java操作Redis缓存设置过期时间

    如何用java操作Redis缓存设置过期时间?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获. 在应用中我们会需要使用red ...

  9. Redis 笔记(03)— string类型(设置key、获取key、设置过期时间、批量设置获取key、对key进行加减、对key值进行追加、获取value子串)

    字符串 string 是 Redis 最简单的数据结构.Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据.不同类型的数据结构的 ...

最新文章

  1. python类的__slots__属性、__del__属性、上下文(__enter__和__exit__)、
  2. python安装之后怎么打开-安装python后如何通过Python打开网页
  3. 【java设计模式】-00目录
  4. Java基础系列8:Java的序列化与反序列化(修)
  5. php渐变字,jQuery_jQuery实现的立体文字渐变效果,先截两个图看看: 效果很 - phpStudy...
  6. 数据中台送到家 企业数字化转型“输血”变“造血”
  7. Ajax解析laravelJSON,3分钟短文:Laravel请求体内JSON格式数据的处理办法
  8. html作业本,小鹅通作业本使用教程
  9. 《利用Python》进行数据分析:Numpy基础8 花式索引
  10. java私有协议开发_priProto 基于netty5基于私有协议栈设计
  11. 用74ls90组成二十四进制计数器_89c52定时计数器T2
  12. 在线验证18位身份证
  13. 安卓虚拟机 选择分辨率
  14. 罗翔陈佩斯:从狂妄到自省
  15. 安卓高级面试知识整理
  16. 私服上传出现Failed to transfer file ...... 400错误
  17. 【Leetcode】825. Friends Of Appropriate Ages
  18. SEI(Supplemental Enhancement Information)
  19. H.266/VVC代码学习21:帧内角度预测的实现 / 近对角模式的PDPC(xPredIntraAng)
  20. 做一个电商网站我们应该注意哪些问题?

热门文章

  1. C# Lambda 表达式
  2. Photoshop 中的彩蛋
  3. android aar 自动引入依赖
  4. 函数调用之特殊三位数
  5. vue 动态显示图片报错 404
  6. 金属胁迫+转录组=高分好文
  7. FTP服务器异地备份文件,ftp异地备份
  8. 这位印度小哥,拯救了山河日下的微软帝国
  9. 求助:truffle unbox pet-shop时truffle test出错
  10. 亚特兰提斯之帝国的遗址