java:随机时间生成器

时间:2013-02-20 16:10:11

标签: java random time random-time-generation

如何生成随机Time值?例如:07:02:3308:52:14等。我知道如何生成随机数,但我不知道如何做到这一点。我想用随机值填充我的数据库列TIME

6 个答案:

答案 0 :(得分:3)

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

出于您的目的,这可能就足够了。不要忘记,有些日子可能需要添加测试用例(夏令时和闰秒)。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

使用像here RandomUtil class这样的随机生成器,您可以在某些值之间创建随机日期等等。

使用此类的代码示例:

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

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

日历calendarFromDB = Calendar.getInstance();

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

示例输出:

Tue Jul 26 02:30:27 CET 157737154

或者如果你想在某些日期之间只是随机的日期或时间

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

示例输出:

<强>二十二时29分15秒

答案 3 :(得分:1)

In,java1.8

  

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

答案 4 :(得分:0)

如果您不知道如何生成随机时间戳,如果您知道如何生成随机数,那么每次生成3个随机数如何以便您可以创建随机时间值?

答案 5 :(得分:0)

如果您可以使用第三方库,那么可以使用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);
}

示例输出:

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