java:随机时间生成器

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/14984545/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 18:05:55  来源:igfitidea点击:

java: Random Time generator

javarandomtimerandom-time-generation

提问by Martin Nemeth

How do I generate random Timevalues? For example: 07:02:33, 08:52:14, etc. I know how to generate random numbers but I don't know how to do this. I want to fill my database column TIMEwith random values.

如何生成随机Time值?例如:07:02:33,08:52:14等。我知道如何生成随机数,但我不知道如何执行此操作。我想TIME用随机值填充我的数据库列。

回答by Sam

import java.util.Random;
import java.sql.Time;

final Random random = new Random();
final int millisInDay = 24*60*60*1000;
Time time = new Time((long)random.nextInt(millisInDay));

For your purposes this might be enough. Don't forget that some days have different lengths for which you might need to add test cases (daylight savings and leap seconds).

就您的目的而言,这可能就足够了。不要忘记,有些日子的长度不同,您可能需要为其添加测试用例(夏令时和闰秒)。

回答by Costi Ciudatu

A java.util.Dateis merely a wrapper around a long value (milliseconds since the epoch). Therefore, you could simply generate random long values with Random.nextLong(), and wrap the result within a new Date(result). These date instances you can pass to your JDBC driver.

Ajava.util.Date只是一个长值的包装器(自纪元以来的毫秒数)。因此,您可以简单地使用 生成随机长值Random.nextLong(),并将结果包装在new Date(result). 您可以将这些日期实例传递给您的 JDBC 驱动程序。

回答by Amit

In, java1.8

在,java1.8

Random generator = new Random(seed); LocalTime time = LocalTime.MIN.plusSeconds(generator.nextLong());

Random generator = new Random(seed); LocalTime time = LocalTime.MIN.plusSeconds(generator.nextLong());

回答by exp2Tapavicki

Using Random Generator like one here RandomUtil classyou can make random dates between some values and much more.

使用 Random Generator 就像这里的 RandomUtil 类一样,您可以在某些值之间创建随机日期等等。

Code examples using this class:

使用此类的代码示例:

If you need to update time from existing date you can use code like this. Just replace System.currentTimeMillis() with date from database.

如果您需要从现有日期更新时间,您可以使用这样的代码。只需用数据库中的日期替换 System.currentTimeMillis() 即可。

java.util.Date dateFromDB = new java.util.Date(System.currentTimeMillis());

Calendar calendarFromDB = Calendar.getInstance();

日历 calendarFromDB = Calendar.getInstance();

calendarFromDB.setTime(dateFromDB);

calendarFromDB.setTime(dateFromDB);

java.util.Date randomDate = RandomUtil.getRandomDate(new java.util.Date(RandomUtil.getMinimumDate()), new java.util.Date(RandomUtil.getMaximumDate()), false);
Calendar calendar=Calendar.getInstance();
calendar.setTime(randomDate);

calendarFromDB.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY));
calendarFromDB.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE));
calendarFromDB.set(Calendar.SECOND, calendar.get(Calendar.SECOND));

dateFromDB = calendarFromDB.getTime();

Sample output:

示例输出:

Tue Jul 26 02:30:27 CET 157737154

7 月 26 日,星期二 02:30:27 CET 157737154

or if you want just random date or time between some dates

或者如果您只想要某些日期之间的随机日期或时间

java.util.Date randomDate = RandomUtil.getRandomDate(new java.util.Date(RandomUtil.getMinimumDate()), new java.util.Date(RandomUtil.getMaximumDate()), false);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf.format(randomDate));

Sample output:

示例输出:

22:29:15

22:29:15

回答by Khoa Nghiem

Without looking at how to generate random timestamps, if you know how to generate random numbers, how about you generate 3 random numbers each time so that you can make a random time value?

不看如何生成随机时间戳,如果你知道如何生成随机数,那么你每次生成3个随机数,这样你就可以做出一个随机的时间值怎么样?

回答by Perception

If you can use a third party library heres a way to do it using Joda Time. You will need to tweak the code to fit your scenario:

如果您可以使用第三方库,这里有一种使用 Joda Time 的方法。您需要调整代码以适合您的场景:

final Random random = new Random();
for (int i = 0; i < 10; i++) {
    final LocalTime time = new LocalTime(random.nextLong());
    System.out.println(time);
}

Sample output:

示例输出:

01:58:24.328
10:59:20.576
07:52:40.011
11:53:54.524
13:43:57.474
21:51:25.032
11:46:35.988
16:20:20.224
09:47:10.404
22:35:43.337