时间段随机 java_java生成指定范围的随机日期

2023-11-03

有这样一个需求:构造一个方法,随机生成1990-12-31 00:00 00到 2013-12-31 00:00:00之间任意一个时间点。

思路是这样:在javaAPI中 Date类型和long类型很好转化,所以我们可以把问题转化为,求两个long类型数之间的任意值。

同时需要了解java API中的:Math.round(double)  Math.random();  new Date(year,month,day); Calendar。

Math.random() 会随机生成大于等于0小于1的随机的double类型。

Math.round(double ) 需要传入一个double类型,返回最接近这个double类型的long类型。

Calendar 是处理时间的工具类,如Date一样Calendar的月份也是从0开始计算

具体代码如下

public static String randomDateBetweenMinAndMax(){

Calendar calendar = Calendar.getInstance();

//注意月份要减去1

calendar.set(1990,11,31);

calendar.getTime().getTime();

//根据需求,这里要将时分秒设置为0

calendar.set(Calendar.HOUR_OF_DAY, 0);

calendar.set(Calendar.MINUTE, 0);

calendar.set(Calendar.SECOND,0);

long min = calendar.getTime().getTime();;

calendar.set(2013,11,31);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.getTime().getTime();

long max = calendar.getTime().getTime();

//得到大于等于min小于max的double值

double randomDate = Math.random()*(max-min)+min;

//将double值舍入为整数,转化成long类型

calendar.setTimeInMillis(Math.round(randomDate));

return calendar.getTime().toString();

}

如果要用Date类处理时间,需要注意,年是从1900开始计算所以要减去1900,月是从0开始计算所以要减去1,比如 new Date(2013,10,10) 得到的date对象表示的时间是3913年11月10日。

System.out.println(new Date(2013,10,10));

结果是:Mon Nov 10 00:00:00 CST 3913

把上面的问题稍微变一下,已知minDate和maxDate,要求把这个时间区间的每一天放入list。

public static void getDateBetweenMaxAndMin(){

List list = new ArrayList();

Calendar calendar = Calendar.getInstance();

calendar.set(2010,10,10);

Date minDate = calendar.getTime(); //最小时间

calendar.set(2013,11,1);

Date maxDate = calendar.getTime();//最大时间

//计算两个时间点相隔多少天

int totalDays = Ints.checkedCast((maxDate.getTime() - minDate.getTime()) / (1000 * 60 * 60 * 24));

calendar.setTime(minDate);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

for(int i = 0;i<=totalDays;i++){

if(i!=0){

//天数加1

calendar.add(Calendar.DAY_OF_MONTH,1);

}

list.add(calendar.getTime());

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间段随机 java_java生成指定范围的随机日期 的相关文章

  • [人工智能-深度学习-43]:输入预处理 - 规范化Normalization、标准化Standardization、正态分布、算术平均、方差

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121215445 目录 第1章 多维数
  • opencv之霍夫曼变换

    霍夫变换不仅可以找出图片中的直线 也可以找出圆 椭圆 三角形等等 只要你能定义出直线方程 圆形的方程等等 不得不说 现在网上的各种博客质量真的不行 网上一堆文章 乱TM瞎写 误人子弟 本身自己就没有理解的很清楚 又不去读算法实现的源码 写的
  • alibaba Sentinel 限流

    文章目录 pom yml app controller 过滤器限流 服务限流 pom
  • 过滤多余空格

    问题描述 一个句子中也许有多个连续空格 过滤掉多余的空格 只留下一个空格 输入格式 一行 一个字符串 长度不超过 200200 句子的头和尾都没有空格 输出格式 过滤之后的句子 Sample 1 Inputcopy Outputcopy H
  • 二分搜索树

    经典写法 内心os 就是有点繁琐hh include
  • ImportError: No module named ‘xxx‘ python无法找到工作目录下

    在目录下添加空文件 init py 这样文件夹 就被作为包处理 也就能找到了 参考 实战教程 VScode中误报 import error 解决方案 qfluohao的博客 CSDN博客 vscode使用import报错
  • phpstorm初始化设置(不定期更新)

    刚下载phpstorm肯定要进行一些初始化设置 方便我们的开发 设置 编辑器 文件编码 都改成UTF 8 以防出现乱码 设置 编辑器 颜色和字体 选用Monokai主题 便于舒适开发 设置 编辑器 颜色和字体 font 根据显示器 设置字体
  • 53. Maximum Subarray

    题目 Given an integer array nums find the contiguous subarray containing at least one number which has the largest sum and
  • win10pe系统计算机名修改,Win10怎么修改账户名?

    有些用户在重装win10系统的时候 因为忘记在开始的时候修改账户名称 所以 重装完成后系统的账户名称会默认是Administer 但是有些用户想修改 却不知道应该怎么修改 所以PE吧就给大家带来了win10修改账户名称的方法步骤 方法 步骤
  • redis实现点赞

    springboot集成redis实现点赞功能 提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 springboot引入redis 二 功能实现 1 点赞流程说明 2 代码实现 总结 一 springboot
  • eclipse合并git分支

    合并选项 merge options m1 提交 提交结果 Commit commit the result m2 没有提交 准备合并提交 但是还没有提交 No commit prepare merge commit but don t c
  • Qt实现JSON数据的组包和解包

    目录 源代码 效果图 源代码 头文件 定义数据结构体 ifndef MAINWINDOW H define MAINWINDOW H include
  • 【机器学习】模型评价指标中的召回率低的原因

    1 样本标注时多数正样本被错误的标注为负样本 这样模型学到正例的能力变弱 这样正样本预测为负样本的同时 负样本的精度也会减少 方法一 对错误的标注样本进行修正 观察结果 看是否有改变 2 一般情况下 正负样本比列小于1 100 看到有的人说
  • 依赖注入学习总结1

    生活中的 控制反转 自己发电和用电网的电 自己发电需要自购发电机 自学发电方法 维护发电设备等等 用电网的电只需要付费就可以直接使用 依赖注入 Dependency Injection DI 是控制反转 Inversion of Contr
  • Windows操作系统的日志分析

    Windows操作系统的日志分析 Windows日志简介 Windows操作系统在其运行的生命周期中会记录其大量的日志信息 这些日志信息包括 Windows事件日志 Windows服务器角色日志 FTP日志 邮件服务日志 MS SQL Se
  • 开发IntelliJ IDEA的插件打包步骤

    以下是将 IDEA 插件打包为 JAR 文件的步骤 1 打开 IDEA 选择 File gt Project Structure 菜单 2 在 Project Structure 对话框中 选择 Artifacts 选项卡 3 点击 Add
  • 理解 Databend Cluster key 原理及使用

    Databend Cluster Key 是指 Databend 可以按声明的 key 排序存储 主要用于用户对时间响应比较高 同时愿意为这个 cluster key 进行额排序操作的用户 Databend 只支持一个 Cluster ke
  • Ubutun X86 18.04编译grpcV3.8.0

    1 安装依赖 安装依赖 sudo apt get install pkg config sudo apt get install autoconf automake libtool make g unzip sudo apt get ins
  • Vue router -- 路由登录拦截 / 路由守卫

    全局前置守卫 beforeEach beforeEach 路由守卫 一般用来做一些进入页面的限制 beforeEach 有三个参数 to from next to 即将要进入的目标路由对象 from 当前导航正要离开的路由 next 进行管

随机推荐

  • Series

    一 转换 import pandas as pd d x 100 y 200 z 300 s1 pd Series d print s1 或者另一种写法 import pandas as pd l1 100 200 300 l2 1 2 3
  • 菜单权限验证和分页功能

    权限验证 1 创建数据库 然后测试菜单权限的联合查询语句 2 创建项目 导入jar包 配置实体类和工具类 3 完成登录功能 当输入用户名和密码正确后跳转到框架页面 编写导航页 top jsp 和内容页 main jsp 在框架页中加载 导航
  • 【概率论】先验概率、联合概率、条件概率、后验概率、全概率、贝叶斯公式

    参考 浅谈全概率公式和贝叶斯公式 先验概率 先验概率是基于背景常识或者历史数据的统计得出的预判概率 一般只包含一个变量 例如P A P B 联合概率 联合概率指的是事件同时发生的概率 例如现在A B两个事件同时发生的概率 记为P A B P
  • Linux系统(Centos7)部署JDK环境

    要想在将Java项目上线 则必须在Linux系统中部署Java项目 而要想Java项目在Linux系统中运行 则首先必须在LInux系统中部署JDK环境 具体步骤如下所示 1 下载JDK8 JDK下载路径 目前官网下载jdk的时候需要登录
  • python解析tcp数据包-python解析获取发往本机的数据包并打印

    1 文件 tcp py 2KB 下载 69 coding cp936 import socket from struct import from time import ctime sleep from os import system s
  • Java中输入一个整数n,实现n的阶乘

    n的阶乘 1 2 3 n public static void main String args 2 输入一个整数n 实现n的阶乘 n n 1 1 Scanner sc new Scanner System in System out pr
  • git push origin master和git push的区别

    目录 1 git push origin master 指定远程仓库名和分支名 2 git push 不指定远程仓库名和分支名 3 这两者的区别 git push是git push origin master的一种简写形式 4 建议使用 g
  • 原代码阅读与分析

    服务计算web技术之原代码阅读与分析 先给出分析代码的链接 mux go 路由Router 创建Router实例 type Router struct Configurable Handler to be used when no rout
  • 编译原理实验 实验二 LL(1)分析法 Python实现

    1 实验目的 通过完成预测分析法的语法分析程序 了解预测分析法和递归子程序法的区别和联系 使学生了解语法分析的功能 掌握语法分析程序设计的原理和构造方法 训练学生掌握开发应用程序的基本方法 有利于提高学生的专业素质 为培养适应社会多方面需要
  • python更换版本。

    问题背景 由于ddddocr库需要python3 9及以下的版本 本人安装的为python3 11版本 所以需要更换版本 解决办法 1 安装所需要版本的pyhton我安装的是python3 9 之前安装的python3 11是不需要卸载的
  • 机器学习笔记(一):监督学习与无监督学习概述

    机器学习的两种模型 监督学习和无监督学习 一 监督学习 supervised learning 监督学习是实际应用中使用更多的机器学习类型 1 监督学习就是学习从x到y 即学习从输入到输出的映射的算法 关键特征就是提供学习算法的实例供机器学
  • Microsoft Dynamics CRM 2015 之安装SQL Server 2012过程中出现“启用windows功能NetFx3时出错...

    错误详细信息 安装 Microsoft NET Framework 3 5 时出错 启用 Windows 功能 NetFx3 时出错 错误代码 2146498298 请尝试从 Windows 管理工具启用 Windows 功能 NetFx3
  • LeetCode日记

    题目 实现 strStr 函数 给定一个 haystack 字符串和一个 needle 字符串 在 haystack 字符串中找出 needle 字符串出现的第一个位置 从0开始 如果不存在 则返回 1 说明 当 needle 是空字符串时
  • html input date不起效,JavaScript – HTML 5 input type =“date”在Firefox中不起作用

    Firefox doesn t support HTML5 s 你有两个选择 gt 总是使用Javascript日期时间选择器 或 gt 检查浏览器是否支持该标签 如果是使用它 如果没有 然后回退在javascript datepicker
  • frida启动报错:./frida-server-15.1.27-android-x86_64: can‘t execute: Is a directory

    报错场景 在MuMu模拟器上安装frida server 启动的时候报错 报错信息如下 frida server 15 1 27 android x86 64 can t execute Is a directory 原因剖析 报错信息上显
  • 10g r2 RAC Dataguard 3 nodes

    最近在深圳实施windows 2003 上的oracle RAC项目 原来计划是两个节点 结果客户要求三个节点 因为是他们认为购买的服务器只有二个cpu 原来计划是四个cpu 然后还要在做dataguard 一开始安装很顺利 两个节点测试也
  • HTTP状态 405 - 方法不允许

    错误描述 HTTP状态 405 方法不允许 类型 状态报告 消息 Request method GET not supported 描述 请求行中接收的方法由源服务器知道 但目标资源不支持 此时的原因是请求类型错误 网页是get请求 但是实
  • springMVC项目如何配置tomcat

    先打开项目然后按图片所示操作 最后点击ok就可以启动项目啦
  • 【机器学习教程】四、随机森林:从论文到实践

    引言 随机森林 Random Forest 是机器学习领域中一种强大的集成学习算法 它的优秀性能和广泛应用使得它成为了机器学习领域的一个重要里程碑 本文将从算法的发展历程 重要论文 原理以及实际应用等方面详细介绍随机森林 并提供一个复杂的实
  • 时间段随机 java_java生成指定范围的随机日期

    有这样一个需求 构造一个方法 随机生成1990 12 31 00 00 00到 2013 12 31 00 00 00之间任意一个时间点 思路是这样 在javaAPI中 Date类型和long类型很好转化 所以我们可以把问题转化为 求两个l