Java产生指定范围内的随机日期
要想产生指定范围内的随机日期,首先我们要指定一个范围,那么我们可以通过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产生指定范围内的随机日期的更多相关文章
- PHP中查询指定时间范围内的所有日期,月份,季度,年份
/** * 查询指定时间范围内的所有日期,月份,季度,年份 * * @param $startDate 指定开始时间,Y-m-d格式 * @param $endDate 指定结束时间,Y-m-d格式 ...
- 【VBA】返回指定范围内的随机整数
返回指定范围内的随机整数: Sub main() Randomize Debug.Print 随机整数(1, 2) End Sub Function 随机整数(a As Integer, b As I ...
- python获取指定时间段内的随机不重复的时间点
上篇 <python时间时分秒与秒数的互相转换>http://www.cnblogs.com/gayhub/p/6154707.html 提到了把时间转成秒数的方法, 这篇写写转换成秒数后 ...
- java在指定区间内生成随机数
Random对象生成随机数 首先需要导入包含Random的包 import java.util.Random; nextInt(int)方法将生成0~参数之间的随机整数但不包括参数. 例如生成0~99 ...
- Java生成指定范围内的工具类
/** * 生成[min, max]之间的随机整数 * * @param min 最小整数 * @param max 最大整数 * @return * @author jqlin */ private ...
- SQL Server中获取指定时间段内的所有日期
DECLARE @days INT, @date_start DATETIME = '2016-11-01', @date_end DATETIME = '2016-11-10' SET @days ...
- Mysql 生成指定时间段内的所有日期
DELIMITER $$ DROP PROCEDURE IF EXISTS create_calendar $$ CREATE PROCEDURE create_calendar (s_date DA ...
- 【前端】JavaScript获取指定范围内的随机整数
function getRandomIntNumber(min, max) { var span = max - min + 1; var result = Math.floor(Math.rando ...
- js生成一个指定范围内的随机整数
function __random(start=0, end=1) { return Math.floor(Math.random() * (end - start + 1) + start); } ...
随机推荐
- 从0开始手把手带你入门Vue3-全网最全(1.1w字)
天命不足畏,祖宗不足法. --王安石 前言 本文并非标题党,而是实实在在的硬核文章,如果有想要学习Vue3的网友,可以大致的浏览一下本文,总体来说本篇博客涵盖了Vue3中绝大部分内容,包含常用的Com ...
- MongoDB高级应用之高可用方案实战(4)
1.MongDB启动与关闭 1.1.命令行启动 ./mongod --fork --dbpath=/opt/mongodb/data ----logpath=/opt/mongodb/log/mong ...
- vim - 显示不可见字符(:set list)
默认情况下,vim是不会显示space,tabs,newlines,trailing space,wrapped lines等不可见字符的.我们可以使用以下命令打开list选项,来显示非可见字符: : ...
- Vue系列教程(二)之Vue进阶
一.Vue对象的操作 1. 可以通过一个Vue对象操作另一个Vue对象 var v1 = new Vue({ el: "#app1", data: {title:"hel ...
- Echart可视化学习(十一)
文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 官网找到类似实例, 适当分析,并且 ...
- Antd使用timePicker封装时间范围选择器(React hook版)
antd中提供了是日期范围选择器及datepaicker封装日期范围选择器的示例,但是没有时间选择范围的组件,这里使用两个timePicker组合一个事件范围选择器,通过disabled属性限定时间可 ...
- 微服务架构 | 3.2 Alibaba Nacos 注册中心
目录 前言 1. Nacos 基础知识 1.1 Nacos 命名方式 1.2 Nasoc 是什么 1.3 Nacos 的 4 个关键特性 1.4 Nacos 生态图 1.5 Nacos 架构图 1.6 ...
- 2021年SpringBoot面试题200道及答案
https://blog.csdn.net/yanpenglei/article/details/120822218 https://blog.csdn.net/ldb987/article/deta ...
- golang中接口对象的转型
接口对象的转型有两种方式: 1. 方式一:instance,ok:=接口对象.(实际类型) 如果该接口对象是对应的实际类型,那么instance就是转型之后对象,ok的值为true 配合if...el ...
- java-异常-自定义异常异常类的抛出throws
1 package p1.exception; 2 /* 3 * 对于角标是整数不存在,可以用角标越界表示, 4 * 对于负数为角标的情况,准备用负数角标异常来表示. 5 * 6 * 负数角标这种异常 ...