【问题标题】:android - generate random date and timeandroid - 生成随机日期和时间
【发布时间】:2013-02-05 06:11:15
【问题描述】:

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

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

我不清楚如何执行此操作。有什么建议吗?

【问题讨论】:

  • 在所需范围内生成随机长整数并将它们转换为带有new Date(long) 的日期并根据需要对其进行格式化?

标签: java android arrays datetime


【解决方案1】:

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

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));
    }
}

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

【讨论】:

  • randBetween 方法给出的边缘值只有区间内值概率的一半。
【解决方案2】:

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

Java simple Timestamp to Date conversion

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 2021-07-30
      • 2013-05-10
      相关资源
      最近更新 更多