我的输入字符串是" mmyy"日期格式,我希望能够用相同格式的随机日期替换该字符串" mmyy"但这一年必须在2010年之前。我该怎么办?有什么建议吗?我必须设置SimpleDateFormat吗?
示例:输入:" 0914" ,我的输出应该是随机的,并返回一个字符串,如" 0802"在哪里" 02"是2002年,即2010年之前。
由于
答案 0 :(得分:2)
请尝试以下Java 8版本的代码段:
// Generate random date
Random random = new Random();
LocalDate maxDate = LocalDate.of(2010, 1, 1);
long randomDay = random.nextInt((int) maxDate.toEpochDay());
LocalDate randomDate = LocalDate.ofEpochDay(randomDay);
// Convert to String using 'MMyy' pattern
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMyy");
String result = dtf.format(randomDate.atStartOfDay());
System.out.println(result);
注1: 这应该会产生1月19日到1月20日之间的随机日期(不包括) - 这是你想要的吗?
注2:
日期格式是固定的,并且以您声明的方式先验地知道。所以输入字符串不需要"替换",只需使用result
(除非我误解了?)
注3: 请参阅my answer到more general (and possibly duplicate) question。您还可以在那里找到Java 8之前的想法。