带边界的 Android 随机日期生成器

标签 android date random time

我正在尝试生成一个随机的月份和年份,上限为当前年份和月份,下限为静态月份和年份。

我可以生成年份:

    int randomYear = (int) (Math.random() * ( currentYear - 2000 ))+2000;
    //returns a val 2000-2012

2000 是我的下限。因此假设这将产生 2012-2000 年之间的一年。我遇到的问题是,当我尝试设置一个月时,如果随机生成器返回 2012 年并且只有 2 个月,我不确定如何处理。目前我有:

    int randomMonth = (int) Math.random() * (12);

如何处理特殊情况,例如 2012 年的情况,或者如果我将下限设置为 2000 年和 10 月?

最佳答案

这对您来说可能有点长,但使用实际日期会更好:

public static void main(String[] args) {
    Calendar now = Calendar.getInstance();
    Calendar min = Calendar.getInstance();
    Calendar randomDate = (Calendar) now.clone();
    int minYear = 2012;
    int minMonth = 2;
    int minDay = 18;
    min.set(minYear, minMonth-1, minDay);
    int numberOfDaysToAdd = (int) (Math.random() * (daysBetween(min, now) + 1));
    randomDate.add(Calendar.DAY_OF_YEAR, -numberOfDaysToAdd);

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
    System.out.println(dateFormat.format(now.getTime()));
    System.out.println(dateFormat.format(min.getTime()));
    System.out.println(dateFormat.format(randomDate.getTime()));
}

public static int daysBetween(Calendar from, Calendar to) {
    Calendar date = (Calendar) from.clone();
    int daysBetween = 0;
    while (date.before(to)) {
        date.add(Calendar.DAY_OF_MONTH, 1);
        daysBetween++;
    }
    System.out.println(daysBetween);
    return daysBetween;
}

//edit: puh.. 比我想象的要难 ;) 但仅此而已。

关于带边界的 Android 随机日期生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371415/

相关文章:

android - 缩放控制不适用于 map

android - 将自定义应用程序类添加到生产应用程序

java - 从Java中的 Gamma 分布生成随机值

mysql - 包含 Null 值的最大记录作为最大记录

MySQL 查询查找表中最近 3 个日期

javascript - 按条件创建数组

java - 如何创建一个使用种子创建 3 个数字的 Java 随机数生成器?

android - 不要保持 Activity - 它有什么用?

java - 具有多个应用程序标签的 AndroidManifest.xml

date - Zingchart 日期刻度-x 刻度和年终日期指南