Date类常用方法总结(构造|格式化输出|String转换|Long转换|计算间隔|比较)
java.util.Date类
它重写了toString方法,new一个Date类直接输出是按照这样的格式
// "EEE MMM dd HH:mm:ss zzz yyyy"
Fri May 21 16:16:50 CST 2021
构造
构造
Date现在推荐的构造方法有两个
其中无参构造返回的实例是以当前时间为日期的
所有表示时间的long类型日期都是表示从1970年1月1日午夜到现在的时间的时间,单位是ms
//1.
public Date() {
this(System.currentTimeMillis());
}
//2.
public Date(long date) {
fastTime = date;
}
自定义格式化输出
String和Date的转换可以借助 SimpleDateFormat 类来完成
在构造时将格式化字符串当做变量传入,之后调用相关方法即可
将格式字符串转成Date使用的是其.format()方法,将Date转化为格式化字符串则是其.parse()方法
其格式所用占位符使用方法如下
| y | 年份。一般用 yy 表示两位年份,yyyy 表示 4 位年份 | 使用 yy 表示的年扮,如 11; 使用 yyyy 表示的年份,如 2011 |
|---|---|---|
| M | 月份。一般用 MM 表示月份,如果使用 MMM,则会 根据语言环境显示不同语言的月份 | 使用 MM 表示的月份,如 05; 使用 MMM 表示月份,在 Locale.CHINA 语言环境下,如“十月”;在 Locale.US 语言环境下,如 Oct |
| d | 月份中的天数。一般用 dd 表示天数 | 使用 dd 表示的天数,如 10 |
| D | 年份中的天数。表示当天是当年的第几天, 用 D 表示 | 使用 D 表示的年份中的天数,如 295 |
| E | 星期几。用 E 表示,会根据语言环境的不同, 显示不 同语言的星期几 | 使用 E 表示星期几,在 Locale.CHINA 语 言环境下,如“星期四”;在 Locale.US 语 言环境下,如 Thu |
| H | 一天中的小时数(0~23)。一般用 HH 表示小时数 | 使用 HH 表示的小时数,如 18 |
| h | 一天中的小时数(1~12)。一般使用 hh 表示小时数 | 使用 hh 表示的小时数,如 10 (注意 10 有 可能是 10 点,也可能是 22 点) |
| m | 分钟数。一般使用 mm 表示分钟数 | 使用 mm 表示的分钟数,如 29 |
| s | 秒数。一般使用 ss 表示秒数 | 使用 ss 表示的秒数,如 38 |
| S | 毫秒数。一般使用 SSS 表示毫秒数 | 使用 SSS 表示的毫秒数,如 156 |
举例如下
SimpleDateFormat f = new SimpleDateFormat("今天是 " + "yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒");
System.out.println(f.format(now));
//今天是 2021 年 05 月 21 日 星期五 16 点 47 分 21 秒
比较&计算
两个Date类型可以直接比较,使用Date的before和after方法即可
举例:
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd HH mm ss")
System.out.println((ft.parse("2021-5-22 06 21 11")).after(ft.parse("2021-5-22 04 21 11")));
//true
那么如何计算两个Date之间的间隔呢?
一般会用到Date的getTIme方法,将Date转为Long格式,通过两个日期与1970.1.1午夜的时间差来计算
之后再将差值毫秒进行处理即可获得相差的天数/月数/年数。。。处理时需要注意的是Long是整数类型,进行除法运算自动抹零,所以最好转成double运算,否则就会出现以下情况:
逻辑上我们总是会认为,不到一天实际上相差的是一天,比如元旦1月1号放假,12.31号的你早上八点起床去上班,这时举例1.1零点其实已经不足一天了,但是我们仍然会认为还有一天放假,所以如果直接抹零,很多业务逻辑会出问题,所以需要结合Math.ceil()方法一起处理
举例:
//计算两个日期相差天数
double span=ft.parse("2021-5-22 06 21 11").getTime()-ft.parse("2021-5-22 04 21 11").getTime();
System.out.println(Math.ceil(span/1000/3600/24));//毫秒转换为天数
参考:Java日期格式化(DateFormat类和SimpleDateFormat类) (biancheng.net)
Date类常用方法总结(构造|格式化输出|String转换|Long转换|计算间隔|比较)的更多相关文章
- java代码--Date类获取当前时间-格式化输出
44:52 阅读数:2299 package cn.Date; import java.text.Format; import java.text.SimpleDateFormat; import ...
- Java基础-Date类常用方法介绍
Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...
- [java工具类01]__构建格式化输出日期和时间的工具类
在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...
- while循环/格式化输出/ 逻辑运算/ 编码 /单位转换
一.while 循环 1. 循环 while 条件: 代码块(循环体) else: 当上面的条件为假. 才会执行 执行顺序: 判断条件是否为真. 如果真. 执行循环体. 然后再次判断条件....直到循 ...
- 编写Java程序,使用日期处理类实现日期的格式化输出
返回本章节 返回作业目录 需求说明: 按"yyyy-MM-dd"格式输入一个字符串型日期,然后输出这个日期为本年中的第几周. 实现思路: 使用SimpleDateFormat格式化 ...
- Javascript Date类常用方法详解
getDate :得到的是今天是 几号(1-28.29.30.31). getDay : 得到的是今天是 星期几(1-7). getFullYear : 得到的是今天是 几几年(4位). getH ...
- while循环,格式化输出%,运算符,数据类型的转换,编码的初识,
1.内容总览 while循环 格式化输出 运算符 and or not 编码的初识 2. 具体内容 while 循环 where:程序中:你需要重复之前的动作,输入用户名密码时,考虑到while循环. ...
- java常用API之Date类
Date类: 类 Date 表示特定的瞬间,精确到毫秒. 毫秒概念:1000毫秒=1秒 毫秒的0点: System.currentTimeMillis() 返回值long类型参数 用于获取当前日 ...
- Java基础进阶:时间类要点摘要,时间Date类实现格式化与解析源码实现详解,LocalDateTime时间类格式化与解析源码实现详解,Period,Duration获取时间间隔与源码实现,程序异常解析与处理方式
要点摘要 课堂笔记 日期相关 JDK7 日期类-Date 概述 表示一个时间点对象,这个时间点是以1970年1月1日为参考点; 作用 可以通过该类的对象,表示一个时间,并面向对象操作时间; 构造方法 ...
随机推荐
- golang 入门之环境搭建
[安装运行时] 直接上官网下载运行时安装即可:golang 官网 根据自己操作系统选择 golang 运行时版本,例如windows 当然我们也可以直接选择下面的稳定版本进行下载 下载安装后,安装程序 ...
- VisualGDB_VS2010_开发PHP扩展
1.新建一个Linux项目
- 学习笔记-vue hash模式打包
1.打包设置config->index.js 2.图片资源路径出现问题 设置下utils.js文件
- 敏捷史话(十四):敏捷之峰的攀登者 —— Jim Highsmith
"我们希望,一起组成的敏捷联盟能够帮助到其他同行,帮他们用新的更'敏捷'的方式去思考软件开发.方法论和组织.做到这一点,我们就得偿所愿了."Jim Highsmith 在雪鸟会议结 ...
- 神奇的魔方阵--(MagicSquare)(2)
在上一篇博客中,我们讨论了阶数为奇数,以及阶数为(4K)的魔方阵的排列规则,以及代码实现(详见:https://www.cnblogs.com/1651472192-wz/p/14640903.htm ...
- SpringBoot自动装配,比较全的吧,来看看吧~
文章挺长,表达不好,希望能有获~~~~~~~ Spring也提供使用注解来注册bean,为什么要用SpringBoot呢? 使用Spring应用,比如SpringMVC还行需要配置ViewResolv ...
- 《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
一.利用回归树实现分类 分类也可以用回归树来做,简单说来就是训练与类别数相同的几组回归树,每一组代表一个类别,然后对所有组的输出进行softmax操作将其转换为概率分布,然后再通过交叉熵或者KL一类的 ...
- Linux 究级基础入门命令整理
Linux 究级基础入门命令整理 条条框框,三三两两,怎讷个这么多,哈哈!no zuo no die. 纯粹个人菜鸟笔记,望大神笑纳! 后续,未完!! 查看系统信息 uname -a - 查看内核/操 ...
- Windowsw核心编程 第13章 Windows内存结构
第1 3章 Wi n d o w s的内存结构 13.1 进程的虚拟地址空间 每个进程都被赋予它自己的虚拟地址空间.对于 3 2位进程来说,这个地址空间是4 G B,因为3 2位指针可以拥有从0 x ...
- angr脚本——以angrctf解题记录为参考
angr脚本--以angrctf解题记录为参考 angr是用于逆向工程中进行二进制分析的一个python框架 符号执行 (Symbolic Execution)是一种程序分析技术.其可以通过分 ...