安卓 - 生成随机日期和时间

3

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

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

我不知道如何执行这个算法。有任何建议吗?


在所需范围内生成随机长整型数,然后使用 new Date(long) 将其转换为日期,并按需要进行格式化。 - Henry
3个回答

10

你需要的准确解决方案...

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

“randBetween” 方法仅以区间内数值的一半概率给出边缘值。 - Henry

2
你可以使用随机函数获取随机时间戳,也就是说你可以轻松地获取随机长整型数值,然后将该时间戳转换为日期对象,方法如下:通过Java 简单的 Timestamp 转 Date转换。

1
这个想法非常简单。你可以使用Date(milis)构造函数和随机数生成器来生成随机日期和时间。你需要找到下限和上限并在其中随机选择一个数字。
格式化日期和时间非常简单,你可以使用DateFormat类完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接