要想产生指定范围内的随机日期,首先我们要指定一个范围,那么我们可以通过SImpleDateFormat格式化日期,然后再通过parse()方法设置日期,返回一个Date类型的日期对象,再转化为时间戳(long类型的),然后利用随机产生日期。
代码如下:

package day_11_23;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random; /**
* 生成指定时间段内的随机日期:如1999-11-30 00:00:00到现在
*
* @author soberw
*/
public class RandomDate {
public static void main(String[] args) throws ParseException {
//获取当前时间
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis(); //设置指定时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("1999-11-30 00:00:00");
long before = date.getTime(); Random random = new Random(); //产生long类型指定范围随机数
long randomDate = before + (long) (random.nextFloat() * (now - before + 1)); //格式化输出日期
System.out.printf("从1999-11-30 00:00:00到现在的一个随机日期为:%1$tF %1$tT", randomDate); }
}

但是这样写也不是很方便,因为如果我想产生开始和结束都指定范围的随机日期呢,那每次都要重新设置,大大增大了代码的复写率,那么我们可以把产生随机日期写成一个方法,这样就可以反复调用了

package day_11_23;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random; /**
* @author soberw
*/
public class RandomDate2 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//指定开始日期
long start = sdf.parse("2021-1-1 00:00:00").getTime();
//指定结束日期
long end = sdf.parse("2021-11-11 00:00:00").getTime(); //调用方法产生随机数
long randomDate = nextLong(start, end); //格式化输出日期
System.out.printf("随机日期为:%1$tF %1$tT", randomDate); } public static long nextLong(long start, long end) {
Random random = new Random();
return start + (long) (random.nextDouble() * (end - start + 1));
}
}

Java产生指定范围内的随机日期的更多相关文章

  1. PHP中查询指定时间范围内的所有日期,月份,季度,年份

    /** * 查询指定时间范围内的所有日期,月份,季度,年份 * * @param $startDate 指定开始时间,Y-m-d格式 * @param $endDate 指定结束时间,Y-m-d格式 ...

  2. 【VBA】返回指定范围内的随机整数

    返回指定范围内的随机整数: Sub main() Randomize Debug.Print 随机整数(1, 2) End Sub Function 随机整数(a As Integer, b As I ...

  3. python获取指定时间段内的随机不重复的时间点

    上篇 <python时间时分秒与秒数的互相转换>http://www.cnblogs.com/gayhub/p/6154707.html 提到了把时间转成秒数的方法, 这篇写写转换成秒数后 ...

  4. java在指定区间内生成随机数

    Random对象生成随机数 首先需要导入包含Random的包 import java.util.Random; nextInt(int)方法将生成0~参数之间的随机整数但不包括参数. 例如生成0~99 ...

  5. Java生成指定范围内的工具类

    /** * 生成[min, max]之间的随机整数 * * @param min 最小整数 * @param max 最大整数 * @return * @author jqlin */ private ...

  6. SQL Server中获取指定时间段内的所有日期

    DECLARE @days INT, @date_start DATETIME = '2016-11-01', @date_end DATETIME = '2016-11-10' SET @days ...

  7. Mysql 生成指定时间段内的所有日期

    DELIMITER $$ DROP PROCEDURE IF EXISTS create_calendar $$ CREATE PROCEDURE create_calendar (s_date DA ...

  8. 【前端】JavaScript获取指定范围内的随机整数

    function getRandomIntNumber(min, max) { var span = max - min + 1; var result = Math.floor(Math.rando ...

  9. js生成一个指定范围内的随机整数

    function __random(start=0, end=1) { return Math.floor(Math.random() * (end - start + 1) + start); } ...

随机推荐

  1. 从0开始手把手带你入门Vue3-全网最全(1.1w字)

    天命不足畏,祖宗不足法. --王安石 前言 本文并非标题党,而是实实在在的硬核文章,如果有想要学习Vue3的网友,可以大致的浏览一下本文,总体来说本篇博客涵盖了Vue3中绝大部分内容,包含常用的Com ...

  2. MongoDB高级应用之高可用方案实战(4)

    1.MongDB启动与关闭 1.1.命令行启动 ./mongod --fork --dbpath=/opt/mongodb/data ----logpath=/opt/mongodb/log/mong ...

  3. vim - 显示不可见字符(:set list)

    默认情况下,vim是不会显示space,tabs,newlines,trailing space,wrapped lines等不可见字符的.我们可以使用以下命令打开list选项,来显示非可见字符: : ...

  4. Vue系列教程(二)之Vue进阶

    一.Vue对象的操作 1. 可以通过一个Vue对象操作另一个Vue对象 var v1 = new Vue({ el: "#app1", data: {title:"hel ...

  5. Echart可视化学习(十一)

    文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 官网找到类似实例, 适当分析,并且 ...

  6. Antd使用timePicker封装时间范围选择器(React hook版)

    antd中提供了是日期范围选择器及datepaicker封装日期范围选择器的示例,但是没有时间选择范围的组件,这里使用两个timePicker组合一个事件范围选择器,通过disabled属性限定时间可 ...

  7. 微服务架构 | 3.2 Alibaba Nacos 注册中心

    目录 前言 1. Nacos 基础知识 1.1 Nacos 命名方式 1.2 Nasoc 是什么 1.3 Nacos 的 4 个关键特性 1.4 Nacos 生态图 1.5 Nacos 架构图 1.6 ...

  8. 2021年SpringBoot面试题200道及答案

    https://blog.csdn.net/yanpenglei/article/details/120822218 https://blog.csdn.net/ldb987/article/deta ...

  9. golang中接口对象的转型

    接口对象的转型有两种方式: 1. 方式一:instance,ok:=接口对象.(实际类型) 如果该接口对象是对应的实际类型,那么instance就是转型之后对象,ok的值为true 配合if...el ...

  10. java-异常-自定义异常异常类的抛出throws

    1 package p1.exception; 2 /* 3 * 对于角标是整数不存在,可以用角标越界表示, 4 * 对于负数为角标的情况,准备用负数角标异常来表示. 5 * 6 * 负数角标这种异常 ...