生成随机出生日期

新手上路,请多包涵

我正在尝试使用 Java 程序为我的数据库中的人生成随机出生日期。我该怎么做?

原文由 user475529 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 806
2 个回答
import java.util.GregorianCalendar;

public class RandomDateOfBirth {

    public static void main(String[] args) {

        GregorianCalendar gc = new GregorianCalendar();

        int year = randBetween(1900, 2010);

        gc.set(gc.YEAR, year);

        int dayOfYear = randBetween(1, gc.getActualMaximum(gc.DAY_OF_YEAR));

        gc.set(gc.DAY_OF_YEAR, dayOfYear);

        System.out.println(gc.get(gc.YEAR) + "-" + (gc.get(gc.MONTH) + 1) + "-" + gc.get(gc.DAY_OF_MONTH));

    }

    public static int randBetween(int start, int end) {
        return start + (int)Math.round(Math.random() * (end - start));
    }
}

原文由 Saul 发布,翻译遵循 CC BY-SA 3.0 许可协议

java.util.Date 有一个 构造函数 可以接受自大纪元以来的毫秒数,并且 java.util.Random一个方法 可以给你一个随机数的毫秒数。您需要根据所需的 DOB 范围设置随机值的范围,但应该这样做。

非常 粗略:

 Random  rnd;
Date    dt;
long    ms;

// Get a new random instance, seeded from the clock
rnd = new Random();

// Get an Epoch value roughly between 1940 and 2010
// -946771200000L = January 1, 1940
// Add up to 70 years to it (using modulus on the next long)
ms = -946771200000L + (Math.abs(rnd.nextLong()) % (70L * 365 * 24 * 60 * 60 * 1000));

// Construct a date
dt = new Date(ms);

原文由 T.J. Crowder 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题