2013-02-20 196 views
0

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

+0

采取这里帮助http://stackoverflow.com/questions/11016336/how-to-generate- a-random-timestamp-in-java – 2013-02-20 16:13:59

回答

0

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

0

如果您可以使用第三方库继承人使用乔达时间做一个方法。您将需要调整代码以适应您的方案:

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 
+0

我不认为这里需要乔达的时间;特别是因为他正在谈论数据库,并且很可能JDBC驱动程序会期望'java.util.Date'。 – 2013-02-20 16:21:39

+0

很可能如此,如果他在他的数据库中存储了一个TIMESTAMP,那么他可以用'Date'替换'LocalTime'。 – Perception 2013-02-20 16:23:45

2

一个java.util.Date仅仅是围绕一个长值的包装(因为毫秒为单位)。因此,您可以简单地使用Random.nextLong()生成随机长整型值,并将结果包装在new Date(result)之内。这些日期实例可以传递给JDBC驱动程序。

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

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

0

使用随机生成器就像一个here RandomUtil class您可以在一些值之间进行随机日期等等。使用这个类

代码示例:

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

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

Calendar 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日2点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秒

1

在,java1.8

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