Java日期时间类

news/2024/11/27 23:45:28/

Java日期时间类

  • Date
    • new Date()**获取当前系统时间**
    • 通过**指定毫秒数得到时间**
    • format**指定日期格式**
    • SimpleDateFormat的模式字母:
    • parse()可以把**格式化的String转成对应Date**
  • Calendar(日历)
    • 创建日期类对象
    • 获取日历对象的某个日历字段
  • 第三代日期
    • 1.LocalDateTime
      • 使用now()返回表示当前日期时间的对象
      • LocalDateTime各种方法获取所需时间
      • LocalDate与LocalTime
    • 2.DateTimeFormatter对象进行格式化
    • 3.Instant时间戳
      • now返回当前Instant对象
      • 通过from把Instant转为Date
      • 通过date的toInstant()把date转为Instant对象
    • 更多方法


⭐ 更多干货请点击此处

在这里插入图片描述

Date

  1. date精确到毫秒,代表特定的瞬间
  2. SimpleDateFormat:格式和解析日期的类。SimpleDateFormat格式化日期的具体类。它允许进行格式化(日期–>文本)、解析(文本–>日期)和规范化

需要引入java.util.Date

new Date()获取当前系统时间

Date d1 = new Date(); //获取当前系统时间
System.out.println("当前日期="+d1); //默认输出格式是国外方式,需要格式转换

输出

在这里插入图片描述


通过指定毫秒数得到时间

Date d2 = new Date(9234567); 
System.out.println("当前日期"+d2);

输出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wc2i0ota-1673270180840)(C:\Users\86159\AppData\Roaming\Typora\typora-user-images\image-20230109174854520.png)]


format指定日期格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
String format = sdf.format(d1); //format:将日期转换成指定格式的字符串
System.out.println("当前日期="+d1);

输出


SimpleDateFormat的模式字母:

在这里插入图片描述


parse()可以把格式化的String转成对应Date

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
String s = "1996年01月01日 10:20:30 星期一";
Date parse = sdf.parse(s); //使用的sdf格式需要和给的String格式应用,否则抛出转换异常
System.out.println("parse="+parse); //默认国外形式
System.out.println("parse="+sdf.format(parse)); //转成自定义

输出
在这里插入图片描述在这里插入图片描述


Calendar(日历)

  1. 第二代日期类主要就是Calendar类
public abstract class Calendar extends Object implements Serializable,Cloneable,Comparable<Calendar>

在这里插入图片描述

  1. Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期日期)提供了一些方法
  2. new不出来,构造器是private,必须通过**getInstance()**来获取示例

需要引入java.util.Calendar

创建日期类对象

Calendar c = Calendar.getInstance();
System.out.println("c="+c);

输出

在这里插入图片描述


获取日历对象的某个日历字段

System.out.println("年:"+c.get(Calendar.YEAR));
System.out.println("月:"+c.get(Calendar.MONTH)+1);//从0开始,所以加一
System.out.println("日:"+c.get(Calendar.DAY_OF_MONTH));
System.out.println("小时:"+c.get(Calendar.HOUR));//若要用24小时法,改为 HOUR_OF_DAY
System.out.println("分钟:"+c.get(Calendar.MINUTE));
System.out.println("秒:"+c.get(Calendar.SECOND));
//没专门的格式化方法,需要自己组合

输出

在这里插入图片描述


第三代日期

  • 前两代日期类的不足:
    JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引Calendar类之后被弃用了。而Calendar也存在问题:

    1. 可变性:像日期和时间这样的类应该是不可变的。
    2. 偏移性:Date中的年份是从1900开始的,而月份都从0开始。
    3. 格式化:格式化只对Date有用,Calendar则不行。
    4. 此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s)。
  • 第三代日期类常见方法:JDK8加入

    1. LocalDate(日期/年月日)
    2. LocalTime(时间/时分秒)
    3. LocalDateTime(日期时间/年月日时分秒)

在这里插入图片描述


1.LocalDateTime

使用now()返回表示当前日期时间的对象

LocalDateTime ldt = LoaclDateTime.now(); //LoaclDate.now();//LoaclTime.now();
System.out.println(ldt);

输出

在这里插入图片描述


LocalDateTime各种方法获取所需时间

LocalDateTime ldt = LoaclDateTime.now(); //LoaclDate.now();//LoaclTime.now();
System.out.println("年=" + ldt.getYear());
System.out.println("月=" + ldt.getMonth());
System.out.println("月=" + ldt.getMonthValue());
System.out.println("日=" + ldt.getDayOfMonth());
System.out.println("时=" + ldt.getHour());
System.out.println("分=" + ldt.getMinute());
System.out.println("秒=" + ldt.getSecond());

输出

在这里插入图片描述


LocalDate与LocalTime

LocalDate ld = LocalDate.now(); //可以获取年月日
LocalTime lt = LocalTime.now(); //可以获取时分秒

2.DateTimeFormatter对象进行格式化

类似SimpleDateFormat

DateTimeFormatter dtf = DateTimeFormatter.ofPattern(格式);String str = dtf.format(日期对象);
LocalDateTime ldt = LoaclDateTime.now();DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");String format = dateTimeFormatter.format(ldf);System.out.println("格式化的日期=" + format);

输出

在这里插入图片描述

在这里插入图片描述


3.Instant时间戳

类似Date

提供了一系列和Date类转换的方式

Instant–>Date:

Date date = Date.from(instant);

Date–>Instant

Instant instant = date.toInstant();

在这里插入图片描述


now返回当前Instant对象

Instant now = Instant.now();
System.out.println(now);

输出

在这里插入图片描述


通过from把Instant转为Date

Date date = Date.from(now);

通过date的toInstant()把date转为Instant对象

Instant instant = date.toInstant();

更多方法

  • LocalDateTime类
  • MonthDay类:检查重复事件
  • 是否是闰年
  • 增加日期的某个部分
  • 使用plus方法测试增加时间的某个部分
  • 使用minus方法测试查看一年前和一年后的日期

http://www.ppmy.cn/news/10889.html

相关文章

IPO合肥马郢计划:构筑美丽田园综合体上市

合肥市长丰县马郢社区曾经是省级贫困村&#xff0c;为了让这个原本相对落后美丽田园 上市拥有崭新的面貌。2017年至今实施美丽田园综合体、旅游扶贫等项目。马郢社区共有13个村民组、408户、1778人&#xff0c;全村建档立卡贫困户年人均收入仅2000多元。2015年&#xff0c;由杨…

python制作课堂点名系统,从此老师对我关爱有加

前言 大家早好、午好、晚好吖 ❤ ~ 准备工作 首先我们需要准备好点名的姓名文件&#xff0c;使用的时候导入进去就可以开始点名了。 新建一个文本文档&#xff0c;将姓名设置设置好&#xff0c;如下&#xff1a; 使用系统库和第三方库都比较常规 from PyQt5.QtWidgets impo…

【Java编程进阶】Java异常详解

推荐学习专栏&#xff1a;Java 编程进阶之路【从入门到精通】&#xff0c;从入门到就业精通&#xff0c;买不了吃亏&#xff0c;买不了上当&#xff01;&#xff01; 文章目录1. 异常2. 异常的体系3. Error4. 异常产生的过程5. throw 关键字6. 异常处理6.1 throws 关键字6.2 tr…

程序员们有什么好的编程习惯?

优良的代码显然不是制作优秀软件的唯一要素&#xff0c;但是主要的要素之一。我们可能拥有世界上最好的产品和营销团队&#xff0c;部署了最好的平台&#xff0c;并以最好的框架来构建软件&#xff0c;但归根结底&#xff0c;一款软件所做的一切&#xff0c;都是因为有人写了一…

如何进行小红书推广?小红书平台适合推广什么产品?

小红书作为一个生活方式社区&#xff0c;其最大独特性就在于&#xff0c;大部分互联网社区更多是依靠线上的虚拟身份&#xff0c;而小红书用户发布的内容都来自于真实生活&#xff0c;一个分享用户必须具备丰富的生活和消费经验&#xff0c;才能有内容在小红书分享&#xff0c;…

分布式理论协议与算法 第三弹 BASE理论

大部分人解释这 CAP 定律时&#xff0c;常常简单的表述为&#xff1a;“一致性、可用性、分区容错性三者你只能同时达到其中两个&#xff0c;不可能同时达到”。实际上这是一个非常具有误导性质的说法&#xff0c;而且在 CAP 理论诞生 12 年之后&#xff0c;CAP 之父也在 2012 …

Linux中的vim最小集、指令集及其配置

目录 1. vim 最小集 2 vim指令集 2.1 命令模式的指令 2.1.1 插入模式 2.1.2 移动光标 2.1.3 删除文字 2.1.4 复制 2.1.5 替换 2.1.6 撤销 2.1.7 更改 2.1.8 跳至指定的行 2.1.9 shift ~:快速大小写切换 2.2 末行模式的指令 2.2.1 set nu/set nonu 2.2.2 vs file…

测试分析--精准分析

测试分析的概念 测试分析是建立在对「需求本身」、「用户使用场景」以及对应的「系统架构」和「实现细节」的充分了解的基础上&#xff0c;通过对数据流、状态变化、逻辑时序、功能/性能/兼容性等方面的分析&#xff0c;得出测试点的过程&#xff1b; 在现阶段敏捷开发模式普遍…