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

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...