如何生成随机Time
值?例如:07:02:33
,08:52:14
等。我知道如何生成随机数,但我不知道如何执行此操作。我想TIME
用随机值填充我的数据库列。
6 回答
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));
出于您的目的,这可能就足够了。不要忘记有些日子有不同的长度,您可能需要添加测试用例(夏令时和闰秒)。
Ajava.util.Date
只是一个长值(自纪元以来的毫秒数)的包装器。因此,您可以简单地使用 生成随机 long 值Random.nextLong()
,并将结果包装在new Date(result)
. 您可以将这些日期实例传递给您的 JDBC 驱动程序。
在,java1.8
Random generator = new Random(seed); LocalTime time = LocalTime.MIN.plusSeconds(generator.nextLong());
使用像这里的 RandomUtil 类这样的随机生成器,您可以在某些值之间创建随机日期等等。
使用此类的代码示例:
如果您需要从现有日期更新时间,您可以使用这样的代码。只需将 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();
样本输出:
7 月 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));
样本输出:
22:29:15
如果您可以使用第三方库,这里有一种使用 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
不看如何生成随机时间戳,如果你知道如何生成随机数,那你每次生成3个随机数怎么样,这样你就可以做一个随机时间值了?