【发布时间】:2017-03-08 09:35:55
【问题描述】:
我想为给定的年份范围生成随机 DOB。所以我尝试了下面的代码
private static String randomDataOfBirth(int yearStart, int yearEnd)
{
GregorianCalendar gc = new GregorianCalendar();
int year = randBetween(yearStart, yearEnd);
gc.set(Calendar.YEAR, year);
int dayOfYear = randBetween(1, gc.getActualMaximum(Calendar.DAY_OF_YEAR));
gc.set(Calendar.DAY_OF_YEAR, dayOfYear);
String date = null;
if(gc.get(Calendar.MONTH) == 0)
{
date = gc.get(Calendar.YEAR) + "-" + 1 + "-" + gc.get(Calendar.DAY_OF_MONTH);
}else
{
date = gc.get(Calendar.YEAR) + "-" + gc.get(Calendar.MONTH) + "-" + gc.get(Calendar.DAY_OF_MONTH);
}
return date;
}
private static int randBetween(int start, int end) {
// TODO Auto-generated method stub
return start + (int)Math.round(Math.random() * (end - start));
}
主要:-
public static void main(String[] args) {
String dob = randomDataOfBirth(1899, 1937);
System.out.println(dob);
}
我可以生成随机 DOB。但仅针对月份和日期,我想为 1 到 9 的范围添加前缀 '0'
Month - 01, 02, 03 and ... up to 09
Day - 01, 02, 03 and ... up to 09
【问题讨论】:
-
如果您必须使用
GregorianCalendar(Java 8 则不需要),我认为SimpleDateFormat是您问题的标准且直接的答案。 -
@nullpointer - 如果小于 10,则需要在月份和日期的前缀中添加零
标签: java