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());
        }

  • 相关阅读:
    Spring Bean的生命周期
    使用docker安装虚拟机并打开ssh连接
    查看/设置JVM使用的垃圾收集器
    使用Apollo动态修改线上数据源
    java8之lambda表达式
    Java8之Stream
    @Bean 的用法
    Java中的Filter过滤器
    详解tomcat的连接数与线程池
    什么是ClassLoader
  • 原文地址:https://www.cnblogs.com/30go/p/9299540.html
Copyright © 2011-2022 走看看