JAVA时间常用操作工具类

小刘整理了JAVA中对时间的常用操作,封装了几种方法,简单方便,开箱即用。时间转字符串格式,字符串转时间,以及过去和未来的日期。除此之外,还新增了时间戳之差计算时分秒天的具体方案。

    public static void main(String[] args) {System.out.println("过去七天的日期:"+pastDate(7,Calendar.DAY_OF_YEAR,"yyyy-MM-dd"));System.out.println("过去一年的日期:"+pastDate(1,Calendar.YEAR,"yyyy-MM-dd"));Date date = new Date();System.out.println("时间戳转日期:"+timestampToDate(date.getTime()));String str = dateToStr(date, "yyyy-MM-dd HH:mm:ss");System.out.println("日期转字符串日期;"+str);System.out.println("字符串日期转日期"+strToDate(str,"yyyy-MM-dd HH:mm:ss"));System.out.println("校验是否是时间:"+validDate("2023-23.32"));}

Description

    public static void main(String[] args) {String s="2023-11-20 15:10:00";Date start = strToDate(s, "yyyy-MM-dd HH:mm:ss");String end="2023-11-20 15:20:30";Date endT = strToDate(end, "yyyy-MM-dd HH:mm:ss");String aLong = durationTime(start,endT);System.out.println(s);System.out.println(end);System.out.println(aLong);}

Description

/**获取过去日期 之后【】->+* 年月日时分秒:yyyy-MM-dd HH:mm:ss* 年月日:yyyy-MM-dd* @param past 过去几个* @param unit 单位  DAY_OF_YEAR【天】WEEK_OF_YEAR【周】 MONTH【月】* @param pattern* @return*/public static String pastDate(Integer past,Integer unit,String pattern) {Calendar calendar = Calendar.getInstance();calendar.set(unit, calendar.get(unit) - past);Date today = calendar.getTime();SimpleDateFormat format = new SimpleDateFormat(pattern);String result = format.format(today);return result;}/*** 时间戳转换为时间* 10位为秒级时间戳* 13位为毫秒级时间戳* @param time* @return*/public static Date timestampToDate(Long time){Date date = new Date(time.toString().length() > 10 ? time : time * 1000L);return date;}/*** 获取时间格式化* 年月日时分秒:yyyy-MM-dd HH:mm:ss* 年月日:yyyy-MM-dd* @param date* @param pattern* @return*/public static String dateToStr(Date date,String pattern) {SimpleDateFormat format = new SimpleDateFormat(pattern);return format.format(date);}/*** 字符串时间转时间* 年月日时分秒:yyyy-MM-dd HH:mm:ss* 年月日:yyyy-MM-dd* @param time* @param pattern* @return*/public static Date strToDate(String time,String pattern){SimpleDateFormat sdf = new SimpleDateFormat(pattern);try {Date date = sdf.parse(time);return date;} catch (ParseException e) {e.printStackTrace();}return null;}/*** 校验时间是否是日期格式的字符串* @param str*/public static boolean validDate(String str) {boolean time = true;boolean date = true;// 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;SimpleDateFormat formatDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");try {formatDateTime.parse(str);} catch (ParseException e) {time = false;}try {formatDate.parse(str);} catch (ParseException e) {date = false;}if (!time && !date) {System.out.println("请输入正确的日期格式【yyyy-MM-dd/yyyy-MM-dd HH:mm:ss】");}return time || date;}/*** 时间间隔* 多少分钟between.toMinutes();* 多少天between.toDays();* 多少秒between.getSeconds();* 多少分钟多少秒* @param startTime* @param endTime* @return*/public static String durationTime(Date startTime, Date endTime) {LocalDateTime start = LocalDateTime.ofInstant(Optional.ofNullable(startTime).orElse(new Date()).toInstant(), ZoneId.systemDefault());LocalDateTime end = LocalDateTime.ofInstant(Optional.ofNullable(endTime).orElse(new Date()).toInstant(), ZoneId.systemDefault());Duration between = Duration.between(start, end);between.getSeconds();String msg=between.toMinutes()+"分钟"+(between.getSeconds()-between.toMinutes()*60)+"秒";return msg;}

 
 

结尾

时间不一定能证明很多东西,但一定会让你看透很多东西。一眼就能看得到头,不是我们想要的生活,我们为之努力,是努力让自己的生活多一种可能,给自己的未来多一份惊喜。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用nginx部署静态资源

Nginx可以作为静态web服务器来部署静态资源,这个静态资源是指在服务端真实存在,并且能够直接展示的一些文件数据,比如常见的静态资源有html页面、css文件、js文件、图片、视频、音频等资源相对于Tomcat服务器来说,Nginx处理静态资…

DGL在异构图上的GraphConv模块

回顾同构图GraphConv模块 首先回顾一下同构图中实现GraphConv的主要思路(以GraphSAGE为例): 在初始化模块首先是获取源节点和目标节点的输入维度,同时获取输出的特征维度。根据SAGE论文提出的三种聚合操作,需要获取所…

蓝桥杯第四场双周赛(1~6)

1、水题 2、模拟题,写个函数即可 #define pb push_back #define x first #define y second #define int long long #define endl \n const LL maxn 4e057; const LL N 5e0510; const LL mod 1e097; const int inf 0x3f3f; const LL llinf 5e18;typedef pair…

vue3+ts 兄弟组件之间传值

父级&#xff1a; <template><div><!-- <A on-click"getFlag"></A><B :flag"Flag"></B> --><A></A><B></B></div> </template><script setup lang"ts"> i…

01、copilot+pycharm

之——free for student 目录 之——free for student 杂谈 正文 1.for student 2.pycharm 3.使用 杂谈 copilot是github推出的AI程序员&#xff0c;将chatgpt搬到了私人终端且无token限制&#xff0c;下面是使用方法。 GitHub Copilot 是由 GitHub 与 OpenAI 合作开发的…

2023年3月电子学会青少年软件编程 Python编程等级考试一级真题解析(判断题)

2023年3月Python编程等级考试一级真题解析 判断题(共10题,每题2分,共20分) 26、在Python编程中,print的功能是将print()小括号的内容输出到控制台,比如:在Python Shell中输入print(北京,你好)指令,小括号内容可以输出到控制台 答案:错 考点分析:考查python中print…

【【Linux编程介绍之关键配置和常用用法】】

Linux编程介绍之关键配置和常用用法 Hello World ! 我们所说的编写代码包括两部分&#xff1a;代码编写和编译&#xff0c;在Windows下可以使用Visual Studio来完成这两部&#xff0c;可以在 Visual Studio 下编写代码然后直接点击编译就可以了。但是在 Linux 下这两部分是分开…

2024年第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛正式卷任务书

2024年第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛正式卷任务书 2024年第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛正式卷A模块基础设施设置/安全加固&#xff08;200分&#xff09;A-1&#xff1a;登录安全加固&#xff08;Windows, Linux&am…

【Mybatis】预编译/即时sql 数据库连接池

回顾 Mybatis是一个持久层框架.有两种方式(这两种方式可以共存) 1.注解 2.xml 一.传递参数 以使用#{} 来接受参数为例 (以上两种方式一样适用的) 1)传递单个参数 #{} 可以为任意名称 2)多个参数 默认的参数名称就是接口方法声明的形参 3)参数为对象 默认给每个对象的每个属性都…

Linux内核中的overlay文件系统

一、简介 Docker 内核实现容器的功能用了linux 内核中的三个特性 Namespace、Cgroup、UnionFs&#xff0c;今天我们来说一下UnionFs。 linux UnionFs 实现的是overlay 文件系统 OverlayFs 文件系统分为三层&#xff0c; lower 是只读层 Upper 是可读写 Merged 是 lower 和U…

OD机考真题搜集:叠积木1

题目 有一堆长方体积木,它们的高度和宽度都相同,但长度不一。 小橙想把这堆积木叠成一面墙,墙的每层可以放一个积木,或将两个积木拼接起来,要求每层的长度相同。若必须用完这些积木,叠成的墙最多为多少层?如下是叠成的一面墙的图示,积木仅按宽和高所在的面进行拼接。 …

【数据结构】树与二叉树(廿六):树删除指定结点及其子树(算法DS)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲3. 搜索指定数据域的结点4. 删除结点及其左右子树a. 逻辑删除与物理删除b. 算法DSTc. 算法解析d. 代码实现递归释放树算法DS e. 算法测试 5. 代码整合…

PPT 遇到问题总结(修改页码统计)

PPT常见问题 1. 修改页码自动计数 1. 修改页码自动计数 点击 视图——>幻灯片母版——>下翻找到计数页直接修改——>关闭母版视图

vue+springboot读取git的markdown文件并展示

前言 最近&#xff0c;在研究一个如何将我们git项目的MARKDOWN文档获取到&#xff0c;并且可以展示到界面通过检索查到&#xff0c;于是经过几天的摸索&#xff0c;成功的研究了出来 本次前端vue使用的是Markdown-it Markdown-it 是一个用于解析和渲染 Markdown 标记语言的 …

Cache学习(3):Cache地址映射(直接映射缓存组相连缓存全相连缓存)

1 Cache的与存储地址的映射 以一个Cache Size 为 128 Bytes 并且Cache Line是 16 Bytes的Cache为例。首先把这个Cache想象成一个数组&#xff0c;数组总共8个元素&#xff0c;每个元素大小是 16 Bytes&#xff0c;如下图&#xff1a; 现在考虑一个问题&#xff0c;CPU从0x0654…

城市生命线丨桥梁结构健康监测系统的作用

在城市建设当中&#xff0c;有非常多的城市基本建设&#xff0c;建设当中&#xff0c;桥梁作为不可忽视的一环&#xff0c;也需要有很多桥梁建设的智能监测系统&#xff0c;在这个桥梁结构健康监测系统中&#xff0c;桥梁的各个数值都能被监测得到。 WITBEE万宾使用城市生命线智…

高并发内存池

1.什么是内存池 内存池动态内存分配与管理技术&#xff0c;对于程序员来说&#xff0c;通常情况下&#xff0c;动态申请内存需要使用new,delete,malloc,free这些API来申请&#xff0c;这样导致的后果是&#xff0c;当程序长时间运行之后&#xff0c;由于程序运行时所申请的内存…

探索 Rollup:简化你的前端构建流程

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Linux 命令vim(编辑器)

(一)vim编辑器的介绍 vim是文件编辑器&#xff0c;是vi的升级版本&#xff0c;兼容vi的所有指令&#xff0c;同时做了优化和延伸。vim有多种模式&#xff0c;其中常用的模式有命令模式、插入模式、末行模式&#xff1a;。 (二)vim编辑器基本操作 1 进入vim编辑文件 1 vim …

排序算法:归并排序、快速排序、堆排序

归并排序 要将一个数组排序&#xff0c;可以先将它分成两半分别排序&#xff0c;然后再将结果合并&#xff08;归并&#xff09;起来。这里的分成的两半&#xff0c;每部分可以使用其他排序算法&#xff0c;也可以仍然使用归并排序&#xff08;递归&#xff09;。 我看《算法》…