Java 生成指定范围内的随机日期

  • 要想产生指定范围内的随机日期,首先我们要指定一个范围,那么我们可以通过SImpleDateFormat格式化日期,然后再通过parse()方法设置日期,返回一个Date类型的日期对象,再转化为时间戳(long类型的),然后利用随机产生日期。
    代码如下
public class Demo1 {
    public static void main(String[] args) throws Exception {
        Random r = new Random();
        Date d = new Date();
        long after = d.getTime();  //获取时间戳
        //格式化时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String str = "2022-05-01";
        //开始解析时间
        Date d2 = sdf.parse(str);
        long before = d2.getTime();

        long randomDate = (long) (before + (r.nextFloat() * (after - before + 1) ));
        System.out.println(sdf.format(randomDate));
    }
}

为减少代码复用率我们可以把产生随机日期写成一个方法,这样就可以反复调用了

public class Demo2 {
    public static void main(String[] args) throws Exception {
        //格式化时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //输入 随机起始时间
        String str = "2022-05-10";
        //解析时间
        Date d1 = sdf.parse(str);
        long before = d1.getTime();
        //获取当前时间
        Date d2 = new Date();
        long after = d2.getTime();
        
        long randomDate = randomLong(before,after);
        System.out.println(sdf.format(randomDate));
    }
    public static long randomLong(long start, long end){
        Random r = new Random();
        return (long) (start + (r.nextFloat() * (end - start + 1)));
    }
}

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值