总结JDK中的时间日期类

在学习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中增加了关于时间间隔的类,能够表示时间间隔。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值