zoukankan      html  css  js  c++  java
  • java随机范围内的日期

    使用了最新的java8的java.time类,并提供了LocalDateTime和java.util.Date之间的转换。

    使用方法:

    randomLocalDateTime(-3,3) : 取距离今天前后2天的日期。如果今天为7月12日,则日期随机范围为7月10日~7月14日

    测试方法 :

        @org.junit.Test
        public void testRandomDateTime(){
            for(int i=0;i<10;i++){
                System.out.println(randomLocalDateTime(-3,3).format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")));
            }
        }

    测试结果:

     

    源程序:

        /**
         * 取范围日期的随机日期时间,不含边界
         * @param startDay
         * @param endDay
         * @return
         */
        public LocalDateTime randomLocalDateTime(int startDay,int endDay){
            
            int plusMinus = 1;
            if(startDay < 0 && endDay > 0){
                 plusMinus = Math.random()>0.5?1:-1;
                 if(plusMinus>0){
                     startDay = 0;
                 }else{
                    endDay = Math.abs(startDay);
                    startDay = 0;
                 }
            }else if(startDay < 0 && endDay < 0){
                plusMinus = -1;
                
                //两个数交换
                startDay = startDay + endDay;
                endDay  = startDay - endDay;
                startDay = startDay -endDay;
                
                //取绝对值
                startDay = Math.abs(startDay);
                endDay = Math.abs(endDay);
                
            }
            
            LocalDate day = LocalDate.now().plusDays(plusMinus * RandomUtils.nextInt(startDay,endDay));
            int hour = RandomUtils.nextInt(1,24);
            int minute = RandomUtils.nextInt(0,60);
            int second = RandomUtils.nextInt(0,60);
            LocalTime time = LocalTime.of(hour, minute, second);
            return LocalDateTime.of(day, time);
        }
        
        /**
         * 取范围日期的随机日期时间,不含边界
         * @param startDay
         * @param endDay
         * @return
         */
        public Date randomDateTime(int startDay,int endDay){
            LocalDateTime ldt = randomLocalDateTime(startDay,endDay);
            ZonedDateTime zdt = ldt.atZone(ZoneId.systemDefault()); 
            return Date.from(zdt.toInstant());
        }

  • 相关阅读:
    【华为云技术分享】区块链与数据库如何结合?
    【华为云技术分享】跟繁琐的命令行说拜拜!Gerapy分布式爬虫管理框架来袭!
    gin casbin xorm vue-admin权限认证。
    golang优秀库及介绍
    网上的element-ui-admin运行
    golang时区处理
    Let's Encrypt apache的配置
    wireshark分析自己向自己请求服务
    XORM的几个常用数据处理
    golang处理json
  • 原文地址:https://www.cnblogs.com/30go/p/9299540.html
Copyright © 2011-2022 走看看