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

  • 相关阅读:
    CCPC2018-湖南全国邀请赛
    2019中山大学程序设计竞赛
    [POJ]poj1185 炮兵营地(状压DP)
    [CF]Codeforces Round #551 (Div. 2)
    [EOJ]2019 ECNU XCPC April Selection #1
    [现场赛]“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛
    欧拉函数 欧拉筛法 欧拉定理
    [CF]301D Yaroslav and Divisors
    岸芷汀兰的诗集(持续更新)
    模板柱(持续更新)
  • 原文地址:https://www.cnblogs.com/30go/p/9299540.html
Copyright © 2011-2022 走看看