2014年java的随机日期

时间:2015-01-20 10:54:29

标签: java

我想生成一个随机日期作为格式的字符串 - 给定年份的yy-MM-dd。

假设如果我过了一年,它应该给出一年中的随机日期。

我经历了Random()以及nextInt(),但不知道如何获得这个

你能帮我解决一下这个问题吗?

感谢。

3 个答案:

答案 0 :(得分:3)

您可以使用Calendar执行此操作:

final Calendar cal = Calendar.getInstance();
final Random rand = new Random();
final SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd");

cal.set(Calendar.YEAR, 2014);
cal.set(Calendar.DAY_OF_YEAR, rand.nextInt(cal.getActualMaximum(Calendar.DAY_OF_YEAR)) + 1);

System.out.println(format.format(cal.getTime()));

cal.getActualMaximum(Calendar.DAY_OF_YEAR)将返回Calendar在此代码中设置为2014的一年中最后一天的数字。

rand.nextInt()将返回介于0(含)和最后一天(独占)之间的数字。您必须添加1,因为字段Calendar.DAY_OF_YEAR从1开始。

cal.set()会将Calendar的给定字段设置为第二个参数给定的值。它用于将年份设置为2014年,将一年中的日期设置为随机值。

SimpleDateFormat用于以所需格式打印日期。

答案 1 :(得分:3)

您可以使用JSR-310(内置Java 8,但旧版本可用)

public static LocalDate randomDateIn(int year) {
    Year y = Year.of(year);
    return y.atDay(1+new Random().nextInt(y.length()));
}

System.out.println(randomDateIn(2014));

打印类似

的内容
2014-05-21

答案 2 :(得分:-1)

如果您想使用随机,这就是它的工作原理:

Random r=new Random();

int day=r.nextInt(30)+1;   // (think of something yourself for implementing months with different amount of days)
int month=r.nextInt(11)+1; // (+1 because you don't want the zero)

然而,我看到另一个答案,如果它有效可能会为你节省大量时间来实施每月的日子。(和闰年)