我想编写一个程序,该程序随机生成一个11位数字,其中前六位是YYMMDD
,分别代表一年,一个月和一天。例如:931231
。
这是我的代码
long min = 30000000000L;
long max = 99000000000L;
long res=min +(long)(Math.random() * ((max - min) + 1));
答案 0 :(得分:2)
如果我正确理解了您的问题,则您正在尝试生成代表随机日期的数字,如果是这种情况,则可以尝试以下操作:
Random rand = new Random();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
long res = Long.parseLong(dateFormat.format(new Date(rand.nextLong())) + (long) (Math.random() * 100000));
答案 1 :(得分:1)
其中包括两个部分:
使用随机时间和日期格式生成前六个字符:时间与当前时间之间的随机值,提取本地日期,并将其格式化为字符串。
生成最后五个随机数字
public String getRandom() {
Long randomEpochTime = ThreadLocalRandom.current()
.nextLong(Instant.now().toEpochMilli());
String firstSix = Instant
.ofEpochMilli(randomEpochTime)
.atZone(ZoneId.systemDefault())
.toLocalDate()
.format(DateTimeFormatter.ofPattern("yyMdd"));
String lastFive = String.valueOf(ThreadLocalRandom.current().nextInt(100000));
return firstSix.concat(lastFive);
}
答案 2 :(得分:0)
要生成日期部分,请先声明一个int number = 0
首先,生成年份,将其添加到数字中并乘以100
然后生成月份并将其添加到数字中并乘以100
使用月份作为值,选择给定月份的适当天数 并返回一个值并将其添加到数字中。
示例。
int number = 0;
number += 93*100; //number = 9300
number += 12*100; //number = 931200
number += 31; number = 931231;
可以使用类似的方法添加其他5位数字。或执行以下操作:
int othernumber = 321;
String v = String.format("%d%05d", number, othernumber);
long longv = Long.parseLong(v);
System.out.println(longv);