要想产生指定范围内的随机日期,首先我们要指定一个范围,那么我们可以通过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. Linux密码文件介绍

    1. 查看shadow文件内容```cat /etc/shadow```可以看到shadow文件内容,例如:```root:$1$Bg1H/4mz$X89TqH7tpi9dX1B9j5YsF.:148 ...

  2. django rest framework 自定义验证器

    一.基于钩子函数: 官网上的例子: 官方提示:如果字段声明在序列化类上时,就具有参数required=Fasle的作用,当函数名中没有包括字段名时,那么这个验证函数就不起作用 二.基于类的验证器: 使 ...

  3. spring cloud --- Zuul --- 心得

    spring boot      1.5.9.RELEASE spring cloud    Dalston.SR1 1.前言 什么是 Zuul? Zuul是微服务网关,与Gateway类似 ,根据请 ...

  4. Word合并多文档

    图片如果损坏,点击链接: https://www.toutiao.com/i6489785099528176142/ 很多时候,我们需要将两个或者多个文档的内容,放到一起,而最直接的办法就是将多个文档 ...

  5. python实现掘金定时签到抽奖

    python实现掘金定时签到抽奖 一. 概述 这里记录一下使用 python 实现掘金定时签到抽奖.首先需要登录掘金,进入签到页面,按 F12 打开浏览器的调试面板,选择 Network,选择 XHR ...

  6. vmware快速扩容虚拟磁盘

    在使用vmware进行虚拟化的时候,会遇到虚拟磁盘不够用的情况,以前的办法都是使用lvm进行管理扩容,目前在linux上可以实现快速扩容了,具体方法如下: 该方法参考阿里云在线扩容文档:文档地址 其中 ...

  7. CTF-sql-万能密码

    以下是我在学习sql注入时的一些感想分享,希望能帮助到大家,如有错误,望指出. 万能密码的种类: ①select * from admin where username ="" a ...

  8. php中关于数据库的操作

    php中对数据库的操作,举例如下: //连接到本地mysql数据库 $myconn=mysql_connect("localhost","root"," ...

  9. 响应的HTTP协议介绍及常见响应码说明

    响应的HTTP协议介绍 1,响应行 1)响应的协议和版本号 HTTP/1.1 2)响应状态码 200 3)响应状态描述符 ok 2,响应头 1)key:value 不同的响应头,有其不同含义 空行 3 ...

  10. java-异常-编译时检测异常和运行时异常区别(throws和throw区别)

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