java随机生日,产生随机的出生日期

基于Java 8的解决方案的代码段:

Random random = new Random();

int minDay = (int) LocalDate.of(1900, 1, 1).toEpochDay();

int maxDay = (int) LocalDate.of(2015, 1, 1).toEpochDay();

long randomDay = minDay + random.nextInt(maxDay - minDay);

LocalDate randomBirthDate = LocalDate.ofEpochDay(randomDay);

System.out.println(randomBirthDate);

注意:这会生成一个介于1Jan1900(含)和1J2015(含)之间的随机日期。

注意:它基于纪元天,即相对于1Jan1970(EPOCH)的天-EPOCH 之后为正,EPOCH之前为负

您还可以创建一个小的实用程序类:

public class RandomDate {

private final LocalDate minDate;

private final LocalDate maxDate;

private final Random random;

public RandomDate(LocalDate minDate, LocalDate maxDate) {

this.minDate = minDate;

this.maxDate = maxDate;

this.random = new Random();

}

public LocalDate nextDate() {

int minDay = (int) minDate.toEpochDay();

int maxDay = (int) maxDate.toEpochDay();

long randomDay = minDay + random.nextInt(maxDay - minDay);

return LocalDate.ofEpochDay(randomDay);

}

@Override

public String toString() {

return "RandomDate{" +

"maxDate=" + maxDate +

", minDate=" + minDate +

'}';

}

}

并像这样使用它:

RandomDate rd = new RandomDate(LocalDate.of(1900, 1, 1), LocalDate.of(2010, 1, 1));

System.out.println(rd.nextDate());

System.out.println(rd.nextDate()); // birthdays ad infinitum

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值