精华内容
下载资源
问答
  • 使用场景:redis缓存需要设置 键-值 的过期时间的时候,我们会遇到这个问题。 使用方法:方案一: 使用Calendar(Java 8之前) public static Integer getRemainSecondsOneDay(Date currentDate) { Calendar ...

    使用场景:redis缓存需要设置 键-值 的过期时间的时候,我们会遇到这个问题。

    使用方法:方案一: 使用Calendar(Java 8之前)

    public static Integer getRemainSecondsOneDay(Date currentDate) {
            Calendar midnight=Calendar.getInstance();
            midnight.setTime(currentDate);
            midnight.add(midnight.DAY_OF_MONTH,1);
            midnight.set(midnight.HOUR_OF_DAY,0);
            midnight.set(midnight.MINUTE,0);
            midnight.set(midnight.SECOND,0);
            midnight.set(midnight.MILLISECOND,0);
            Integer seconds=(int)((midnight.getTime().getTime()-currentDate.getTime())/1000);
            return seconds;
        }
    

    方案二:使用LocalDateTime(java 8)

     public static Integer getRemainSecondsOneDay(Date currentDate) {
            LocalDateTime midnight = LocalDateTime.ofInstant(currentDate.toInstant(),
                    ZoneId.systemDefault()).plusDays(1).withHour(0).withMinute(0)
                    .withSecond(0).withNano(0);
            LocalDateTime currentDateTime = LocalDateTime.ofInstant(currentDate.toInstant(),
                    ZoneId.systemDefault());
            long seconds = ChronoUnit.SECONDS.between(currentDateTime, midnight);
            return (int) seconds;
        }
    

    两者区别:使用LocalDateTime提供的对象是不可改变并且线程安全的

    Calendar是线程非安全的,多线程情形下需要注意。

    展开全文
  •   在使用redis缓存的场景中,往往需要设置 键-值 的过期时间,我们在项目中遇到需要获得当前时间点离当前天结束剩余的秒数作为存储到redis的 键-值 的过期时间。改时间通过java生成,下面提供几种方案供读者参考:...

      在使用redis缓存的场景中,往往需要设置 键-值 的过期时间,我们在项目中遇到需要获得当前时间点离当前天结束剩余的秒数作为存储到redis的 键-值 的过期时间。改时间通过java生成,下面提供几种方案供读者参考:

    方案一 使用Calendar

    Calendar类作为java 8之前描述时间的util类,提供了大量的方法,用于时间的操作,使用Calendar计算剩余秒数:

        public static Integer getRemainSecondsOneDay(Date currentDate) {
            Calendar midnight=Calendar.getInstance();
            midnight.setTime(currentDate);
            midnight.add(midnight.DAY_OF_MONTH,1);
            midnight.set(midnight.HOUR_OF_DAY,0);
            midnight.set(midnight.MINUTE,0);
            midnight.set(midnight.SECOND,0);
            midnight.set(midnight.MILLISECOND,0);
            Integer seconds=(int)((midnight.getTime().getTime()-currentDate.getTime())/1000);
            return seconds;
        }
    

    但是需要注意Calendar是线程非安全的,多线程情形下需要注意。

    方案二 使用LocalDateTime

    LocalDateTime是java 8的新特性,提供对时间日期的描述和操作,其提供的对象是不可改变并且线程安全的。

    public static Integer getRemainSecondsOneDay(Date currentDate) {
            LocalDateTime midnight = LocalDateTime.ofInstant(currentDate.toInstant(),
                    ZoneId.systemDefault()).plusDays(1).withHour(0).withMinute(0)
                    .withSecond(0).withNano(0);
            LocalDateTime currentDateTime = LocalDateTime.ofInstant(currentDate.toInstant(),
                    ZoneId.systemDefault());
            long seconds = ChronoUnit.SECONDS.between(currentDateTime, midnight);
            return (int) seconds;
        }
    
    展开全文
  • java如何获取当前时间到第二天凌晨的秒数 原因:前两天写了一个接口,redis缓存有效时间设置到第二天的凌晨中遇到一个坑,这里记录一下。 坑在这里 public Long getSecondsNextEarlyMorning() { Calendar ...

    java如何获取当前时间到第二天凌晨的秒数

    原因:前两天写了一个接口,redis缓存有效时间设置到第二天的凌晨中遇到一个坑,这里记录一下。

    坑在这里

        public Long getSecondsNextEarlyMorning() {
            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 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;
        }

    这样无论当前时间是否超过中午12:00,获取的都是到第二天凌晨的秒数。

    其中JDK文档是这样解释的:

    Calendar.HOUR:get 和 set 的字段数字,指示上午或下午的小时。
    Calendar.HOUR_OF_DAY :get 和 set 的字段数字,指示一天中的小时。

    展开全文
  • java 实现获取当前时间的毫秒数方法

    千次阅读 2019-03-12 17:23:00
    面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> ...
    import java.util.Calendar;
    import java.util.Date;
    
    /**
     * 获取当前时间的毫秒数方法
     * @author baiyu
     *
     */
    public class TestLogBack{
    
        public static void main(String[] args) {
            // 方法一
            System.out.println(System.currentTimeMillis());
    
            // 方法二
            Date date = new Date();
            System.out.println(date.getTime());  
    
            // 方法三
            Calendar calendar = Calendar.getInstance();
            long time = calendar.getTimeInMillis();
            System.out.println(time);
        }
    }
    

     

    展开全文
  • GET + INCR + EXPIRE先获取 key 的当前值,如果没有超出限制再执行 INCR 增1,如果 key 不存在,使用 redis 的事务初始化 key 和过期时间。(推荐:redis视频教程)伪代码:count = redis.GET(key)if redis return nil...
  • java获取当前时间到凌晨0点的秒差

    千次阅读 2019-11-02 14:38:59
    这几天做一个每日分享给予奖励的一个需求,用户每天可以分享多次,考虑的不需要入库,将用户的分享次数用redis记录,每天凌晨0点删除key 翻阅了好几篇文章,看到几个坑,分享一下 public Long ...
  • 经过排查,其主要原因在于使用SQL获取热点新闻的过程中消耗了将近2秒的时间,于是乎,我们又想到了一个简单粗暴的解决方案,即把SQL查询的结果直接缓存在当前api服务器的内存中(设置缓存有效时间为1分钟)。...
  • 我们在项目开发经常需要做一些优化型测试,比如优化代码段,排查代码段效率问题,或者降低内存消耗成本。<?//结果 以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到...laravel,YII2,Redis,Swoole、Swo...
  • 原标题:获取当前时间距离一天结束的剩余秒数(java)使用场景:redis缓存,需要设置 键-值 的过期时间.往往我们会使用当前问题。。使用方法:方案一: 使用Calendar(Java 8之前)public static Integer ...
  • 使用场景:redis缓存,需要设置 键-值 的过期时间.往往我们会使用当前问题。。使用方法:方案一: 使用Calendar(Java 8之前)public static Integer getRemainSecondsOneDay(Date currentDate) {Calendar midnight=...
  • 使用场景:redis缓存,需要设置 键-值 的过期时间.往往我们会使用当前问题。。 使用方法:方案一: 使用Calendar(Java 8之前) public static Integer getRemainSecondsOneDay(Date currentDate) { Calendar ...
  • 当前网上可以找到许多基于redis使用java实现的分布式锁的代码,其主要实现方式主要有以下几种:1. SETNX、GETSET、GET、DEL加锁时,使用SETNX设置锁名和锁的到期时间,若设置成功则获取锁;否则再检查锁是否已过期...
  • 在百度上看到一个这样的代码(代码如下),它是这样的一个结果:(1)如果当前时间超过中午12:00,则返回的结果是当前时间到第二天中午12:00的秒数; (2)如果当前时间不超过中午12:00,则返回的结果是到第二天...
  • 获得当前时间(ms) 首先设置一个锁有效时间valid_time,也就是超过这个时间后锁自动释放,使用相同的key和value对所有redis实例进行设置,每次链接redis实例时设置一个小于valid_time的超时时间,比如valid_...
  • import java.util.concurrent.locks.ReentrantLock; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients...
  • 业务需求是需要限制一个号码一分钟内只能获取一次随机码,之前的实现是短信发送请求过来后,先去数据库查询发送记录,根据上一次的短信发送时间和当前时间比较,如果时间差小于一分钟,则提示短信获取频繁,如果超过...
  • 2、token 做用户登录认证● 流程3、 Java 实现● 用户登录生成 token,保存到 Redis 中最简单的 token 可由 uid (用户唯一的身份标识)、sign (签名)、time (当前时间的时间戳) 加密组成。● 客户端把 token 信息存储...
  • redis实现投票

    2020-02-27 23:36:23
    视频投票用java redis 实现 1业务背景 1.最近疫情当前,公司开发了一个全民健身的小程序,用户需要上传视频报名,然后可以通过投票来排名。排名靠前的有一些奖励,考虑到投票这种东西可能并发大,所以打算用redis来...
  • Java NIO时间服务

    2016-09-27 15:40:16
    时间服务包括客户端和服务端, 服务端监听请求 ,若是时间请求,则返回当前服务器的时间, 各个客户端(分布式锁) 都从给服务器获取时间,已达到全局时间一致。   共三个类 TimeServer、 TimeClient和...
  • 登录认证通过后返回AccessToken信息(在AccessToken中保存当前的时间戳和帐号),同时在Redis中设置一条以帐号为Key,Value为当前时间戳(登录时间)的RefreshToken,现在认证时必须AccessToken没失效以及Redis存在所...
  • 业务:设置一个redis缓存,每天的24点过期,需要设置redis的过期时间,直接使用24小时是不行的,因为我们不能保证每次都是0点0分0秒开始,所以我们需要算出当前时间到明天0点0分0秒的差值 方案一: 使用Calendar...
  • 因此这里如果val传递了0则可以获取当前值,但是这里其实有一个问题,不是很容易复现,但是一旦出现用户就不能调用接口了。 问题 假设应用在调用这个方法,在时间点t1执行set命令,并...
  • 解决方案:在 FreeMarkerViewExtend.java 33行处 增加了BasePath ,通过BasePath 来控制请求目录,在 Freemarker 中可以自由使用,而 JSP 中是直接在 JSP 中获取BasePath 使用。 解决后遗症:因为我们的权限是通过...
  • 9.Java获取当前时间。 10.数据库获取当前时间。 11.生产者与消费者模式。 12.mybatis里面怎样转义大于和小于符号。 13.单例模式。 14.hashMap的存取 15.Java怎么连接redis 16.说出一些常用的类,包,接口,请各举5个...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

java获取redis当前时间

java 订阅
redis 订阅