首页 > 编程语言 >Java生成随机日期

Java生成随机日期

时间:2023-03-21 10:32:44浏览次数:39  
标签:end format long return start 日期 随机 Date Java

public class DateRandomTest {  

// 返回2007-01-01到2007-03-01的一个随机日期
public static void main(String[] args) {
Date randomDate = randomDate("2007-01-01", "2007-03-01");
System.out.println(randomDate.toString());
}

/**
* 获取随机日期
*
* @param beginDate
* 起始日期,格式为:yyyy-MM-dd
* @param endDate
* 结束日期,格式为:yyyy-MM-dd
* @return
*/

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

}




public static Date getRandomDate() {
Random rand = new Random();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd ");
Calendar cal = Calendar.getInstance();
cal.set(2000, 0, 1);
long start = cal.getTimeInMillis();
cal.set(2012, 10, 1);
long end = cal.getTimeInMillis();
Date d = new Date(start + (long) (rand.nextDouble() * (end - start)));
System.out.println(format.format(d));
return d;
}




Date d = new Date(start + (long) (rand.nextDouble() * (end - start)));


这个是从网上见到的 这句有问题 但还没时间去改


标签:end,format,long,return,start,日期,随机,Date,Java
From: https://blog.51cto.com/u_3871599/6139661

相关文章

  • Can not set java.lang.String field com.jsedc.log.pojo.entity.voSyslogV0.happenT
    未加泛型约束的result,其List中的实体对象会被序列化为LinkedHashMap,实际结构为Result<List<LinkedHashMap<String,String>>>导出excel时对象赋值失败......
  • Javaweb学习-书城项目相关
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录笔记以供日后回顾由于是多个视频内容混合在一起,因此只放了第一个链接本文参考价值不高,随便写写......
  • JAVA -适合新手和复习(Restart)
    作为22届专科生,在没有经历和学历的情况下找一份得体的工作 是多么“奢侈”,世上岂无千里马,人中难得九方皋.废话太多我们开始吧!JAVA从这里开始 Java的历史(不感兴趣直......
  • 值得收藏的Java 命名规范参考!
    一、Java中常用到的命名形式共有三种既首字母大写的UpperCamelCase,首字母小写的lowerCamelCase以及全部大写的并用下划线分割单词的UPPERCAMELUNSER_SCORE。通常约定,类一......
  • Linux启动Java程序jar包Shell脚本
    手动方式启动和终止java程序启动java程序jar:nohupjava-jarXXX.jar查看程序占用pid:ps-ef|grepXXX.jar或jpsjps是jdk提供的一个查看当前java进程的小工具,查询Lin......
  • javascript 学习笔记
     JavaScript是区分大小写的,并使用Unicode字符集在JavaScript中,指令被称为语句(Statement),并用分号(;)进行分隔如果一条语句独占一行的话,那么分号是可以省略的。(译者......
  • 2万字70道Java经典面试题总结(附答案)
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校......
  • 深入了解 JavaScript 内存泄漏
    作者:京东零售谢天在任何语言开发的过程中,对于内存的管理都非常重要,JavaScript也不例外。然而在前端浏览器中,用户一般不会在一个页面停留很久,即使有一点内存泄漏,重新加......
  • JavaScript 内置对象你了解多少?
    String字符串对象​字符串转换toStringvarage=20varage2=age.toString()//"20"字符串转换Stringvarage=20varage2=String(age)//"20"字符串分割splitva......
  • Java算法01
    冒泡排序将大的数往后排 packageScanner; importjava.util.*; publicclassDemo04{  publicstaticvoidmain(String[]args){ Scannersan=newScanner(......