最近在学hibernate时,看到一种随机时间的生成方法,觉得很好就把它们复制过来了
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;
import junit.framework.TestCase;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class HibernateHqlTest extends TestCase
{
public void testSave1()
{
Session session=null;
Transaction tx=null;
try
{
session=HibernateUtils.getSession();
tx=session.beginTransaction();
for(int i=0;i<10;i++)
{
Classess classess=new Classess();
classess.setName("班级"+i);
session.save(classess);
for(int j=0;j<10;j++)
{
Students student=new Students();
student.setName("班级"+i+"的学生"+j);
//生成随机时间的测试
student.setCreateTime(randomDate("2009-01-01","2008-10-01"));
student.setClassess(classess);
session.save(student);
}
}
for (int i=0;i<5;i++)
{
Classess classess=new Classess();
classess.setName("无学生班级"+i);
session.save(classess);
}
for (int i=0;i<10;i++)
{
Students student=new Students();
student.setName("无业游民"+i);
session.save(student);
}
tx.commit();
}
catch(Exception e)
{
e.printStackTrace();
tx.rollback();
}
finally
{
HibernateUtils.closeSession(session);
}}
//生成随机时间的方法
private static Date randomDate(String beginDate, String endDate) {
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date start = format.parse(beginDate);// 构造开始日期
Date end = format.parse(endDate);// 构造结束日期
// getTime()表示返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
if (start.getTime() >= end.getTime()) {
return null;
}
long date = random(start.getTime(), end.getTime());
return new Date(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static long random(long begin, long end) {
long rtn = begin + (long) (Math.random() * (end - begin));
// 如果返回的是开始时间和结束时间,则递归调用本函数查找随机值
if (rtn == begin || rtn == end) {
return random(begin, end);
}
return rtn;
}
}