总结JDK中的时间日期类
创始人
2024-05-18 20:30:25
0次

在学习SpringMVC时,遇到了接收时间日期类型的参数的案例。
回顾JDK中与时间日期相关的API。
来系统地学习一下日期时间相关的API。

前置知识

在世界上有统一的时间标准

  • 格林尼治时间,简称GMT(以伦敦的本初子午线为标准),已被弃用
  • 目前是以原子钟作为世界标准时间,简称UTC
    计算机的时间原点 1970年1月1日 0点0分0秒

JDK7相关类

Date类

Date类是JDK中提供的一个时间类,用来描述时间,精确到毫秒,位于java.util包下。

  • 通过无参构造创建Date对象,默认表示系统当前时间。
  • 通过有参构造创建Date对象,表示指定的时间。
    原理:在该类中,利用一个long类型的私有属性来表示自从时间原点以来的毫秒值
    | 方法名 | 描述 |
    | ------------------ | ------------------------------ |
    | Date() | 创建一个当前系统时间的Date对象 |
    | Date(long time) | 创建一个指定时间的Date对象 |
    | setTime(long time) | 修改Date对象中的毫秒值 |
    | getTime() | 返回该对象的毫秒值,类型是一个long |

    该类中还有getDay()、getMonth()等方法,已经不推荐使用了,只需要了解以上的内容即可。

SimpleDateFormat


因为Date对象只能打印默认的样式,不能格式化,因此SimpleDateFormat类就有了。
此类的对象就是一个日期时间格式化器,SimpleDateFormat类的作用

  • 格式化:返回特定格式的日期时间字符串
  • 解析:将字符串解析为Date对象(有了Date对象就可以对日期时间进行运算)
    常用的方法:
    | 方法名称 | 描述 |
    | -------------------------------- | ------------------------------------------------ |
    | SimpleDateFormat() | 构造方法,获取一个默认格式的SimpleDateFormat对象 |
    | SimpleDateFormat(String pattern) | 构造一个指定格式的对象 |
    | public String format(Date date) | 格式化,Date对象 --> 指定格式的String |
    | public Date parse(String date) | 解析,字符串 --> 日期对象 |
    如何来指定日期格式

    以上是常用的格式,JDK的官方文档中更加详细

先来看返回指定格式的日期字符串

再来看通过指定日期的字符串来返回一个Date对象

一个SimpleDateFormat对象只能格式化或解析一种指定格式的,如果需要其他格式,则需要重新创建另一个SimpleDateFormat对象

Canlender

JDK提供的日历类,为了方便日期运算而产生。
一个Canlendar实例代表了当前系统时间的日历对象,可以以年、月、日等不同单位来快速运算日期时间,功能十分强大。
Calendar是一个抽象类,不能直接创建对象,需要通过静态方法getInstance()来获取一个Calendar的实现类对象
常用的API

获取字段

在Calendar中,通过一个数组来维护Date对象的年、月、日、时、分、秒等信息,为了方便获取某个字段的值,在Calendar中定义了一些表示索引的常量,可以通过具体的源码来查看。

注意:
在获取月份时是 0 ~ 11 , 也就是说获取的是1 , 其实是2月份
在获取周时,星期日为1,星期六为7

日期运算

通过调用Calendar对象的add方法来进行某个字段的加减。
或通过set()方法直接对某个字段进行重新赋值。

JDK8新增日期类

ZoneId

ZoneId表示时区。
一个ZoneId实例就代表一个时区对象。
JDK8 为全世界的很多地方的时区都有了划分,比如Asia/Shanghai。


Instant

Instant实例代表一个时间戳。




ZoneDateTime

ZoneDateTime是一个带有时区的时间。

DateTimeFormatter

有些类似于SimpleDateFormat类,
用于时间的格式化和解析。

LocalDate、LocalTime、LocalDateTime

  • LocalDate代表年、月、日的日历类
  • LocalTime代表时、分、秒的日历类
  • LocalDateTime代表年、月、日、时、分、秒的日历类


其中LocalDateTime还可以转换成LocalDate和LocalDateTime

Duration、Period、ChronoUnit

在JDK8中增加了关于时间间隔的类,能够表示时间间隔。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...