3

为了触发一些未来的事件,我正在尝试创建一个算法来执行以下操作:

  • yyyy-mm-dd以“ ”格式生成一定数量的随机日期
  • 以“”格式为每个日期生成时间hh:mm:ss时间应该是(24 小时)在 9 到 22 小时之间
  • 将这些项目添加到字符串数组。1 个完整的数组条目看起来像“ 2013-02-25 09:45:23

我没有明确的想法如何执行此操作。有什么建议么?

4

3 回答 3

8

您需要的确切解决方案..

public class RandomDateTime {

    public static void main(String[] args) {

        SimpleDateFormat dfDateTime  = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss",Locale.getDefault());
        int year = RandomDateTime.randBetween(1900, 2013);// Here you can set Range of years you need
        int month = RandomDateTime.randBetween(0, 11);
        int hour = RandomDateTime.randBetween(9, 22); //Hours will be displayed in between 9 to 22
        int min = RandomDateTime.randBetween(0, 59);
        int sec = RandomDateTime.randBetween(0, 59);


        GregorianCalendar gc = new GregorianCalendar(year, month, 1);
        int day = RandomDateTime.randBetween(1, gc.getActualMaximum(gc.DAY_OF_MONTH));

        gc.set(year, month, day, hour, min,sec);

        System.out.println(dfDateTime.format(gc.getTime()));

    }


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

您可以在以下位置找到 SimpleDateTime 的更多用途:http: //docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

于 2013-02-20T09:49:24.093 回答
3

您可以做的是使用随机函数获取随机时间戳,我的意思是您可以轻松获取随机长值,然后将该时间戳转换为日期对象,如下所示

Java简单的时间戳到日期转换

于 2013-02-20T09:41:32.187 回答
1

这个想法很简单。您可以使用 Date(milis) 构造函数和随机数生成器来生成随机日期和时间。您必须找到下限和上限,并从中随机选择一个数字。

格式化日期和时间非常简单,您可以使用 DateFormat 类来完成。

于 2013-02-20T09:41:14.013 回答