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); } ...
随机推荐
- 教你三步在CentOS 7 中安装或升级最新的内核
转载自:https://www.linuxprobe.com/update-kernel-centos7.html #步骤 1:检查已安装的内核版本 >uname -sr #步骤 2:在 Cen ...
- float类型数据精度问题:12.0f-11.9f=0.10000038,"减不尽"为什么?
现在我们就详细剖析一下浮点型运算为什么会造成精度丢失? 1.小数的二进制表示问题 首先我们要搞清楚下面两个问题: (1) 十进制整数如何转化为二进制数 算法很简单.举个例子,11表示成二进制数: 1 ...
- 使用 淘宝 接口,根据公网ip 获取地理信息
1. 源码,点击查看 1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStr ...
- 关于less使用初学者常犯错误
1.多层嵌套 2.定义变量复用性不高 3.方法定义多余参数.
- 创建VS Code 扩展插件
VS Code提供了强大的扩展功能,我们可以通过开发插件实现自己的业务模型编辑器.这里我们快速介绍一下插件的创建.开发和发布过程. 创建插件开发模板 首先需要确认系统中安装了node.js,并且可以使 ...
- Visual Studio 2019 与 Visual Studio 2022的下载方式
相信大家目前百度或者其他搜索引擎搜索到的都是2022了,那么vs2019该如何安装呢? vs2019下载地址:https://visualstudio.microsoft.com/zh-hans/th ...
- VScode远程连接服务器
VScode远程连接服务器 1.远程服务器安装rmate,在远程服务器上执行以下操作 wget https://raw.githubusercontent.com/sclukey/rmate-pyth ...
- 【刷题-LeetCode】205. Isomorphic Strings
Isomorphic Strings Given two strings *s* and *t*, determine if they are isomorphic. Two strings are ...
- 【源码阅读】vm-insert与vm-storage之间的通讯
先说结论 vm-insert与vm-storage之间采用极其简单的通讯协议 对于简单的场景,越简单性能越高 vm-insert连接到vm-storage后,先发送字符串vminsert.02,vm- ...
- 🏆【Alibaba中间件技术系列】「Nacos技术专题」配置中心加载原理和配置实时更新原理分析(上)
官方资源 https://nacos.io/zh-cn/docs/quick-start.html Nacos之配置中心 动态配置管理是 Nacos的三大功能之一,通过动态配置服务,可以在所有环境中以 ...