Java Date 对象详解

这篇具有很好参考价值的文章主要介绍了Java Date 对象详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 Java Date 对象

Java Date 类表示日期和时间,可以存储从1970年1月1日零时(格林威治标准时间)起累计的毫秒数。Date 对象支持日期的计算和显示,并且可以与其他系统进行时间数据的交换。

  1. 创建 Date 对象

Java 中创建 Date 对象的方式有多种,例如:

(1) 使用空构造函数创建一个当前日期和时间的对象。

Date date = new Date();

(2) 使用指定毫秒数的构造函数创建一个指定时刻的对象。

Date date = new Date(1618977192000L);
  1. 常用方法

Date 类提供了以下常用方法:

(1) getTime():返回自 1970 年 1 月 1 日零时开始累计的毫秒数。

(2) setTime(long time):设置自 1970 年 1 月 1 日零时开始累计的毫秒数。

(3) equals(Object obj):比较当前日期和时间是否等于另一个日期和时间。

(4) compareTo(Date anotherDate):将当前日期和时间与另一个日期和时间比较,如果当前日期和时间更早则返回负数,如果相等则返回 0,如果当前日期和时间更晚则返回正数。

(5) before(Date when) 和 after(Date when):分别表示当前日期和时间是否在另一个日期和时间之前或之后。

  1. 问题

Date 类存在以下问题:

(1) 可变性问题:Date 对象是可变的,因此在多线程环境下,可能会发生并发问题。

(2) 易混淆问题:Date 类提供的 getYear() 方法返回的是从 1900 年开始的年份,而且月份从 0 开始计算。

(3) 不支持国际化问题:Date 类不支持国际化,因此无法根据不同的语言和文化输出日期和时间。

二、 时间格式化

Java 提供了 SimpleDateFormat 类来格式化和解析日期和时间。SimpleDateFormat 类使用预定义的模式来指定日期和时间格式,也可以通过自定义模式来输出或解析日期和时间。

  1. 常用模式

以下是一些常用的预定义模式:

模式 描述
yyyy-MM-dd 日期(年-月-日)
HH:mm:ss 时间(时:分:秒)
yyyy-MM-dd HH:mm:ss 日期时间(年-月-日 时:分:秒)
E 星期几
MMM 月份(Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec)
yyy/MM/dd HH:mm:ss ZZ 自定义日期时间格式
  1. 使用 SimpleDateFormat 格式化日期和时间

使用 SimpleDateFormat 可以将 Date 类型的日期和时间转换为指定模式的字符串。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String strDate = sdf.format(date);
System.out.println("当前日期时间为:" + strDate);
  1. 使用 SimpleDateFormat 解析日期和时间

使用 SimpleDateFormat 可以将指定模式的字符串转换为 Date 类型的日期和时间,也可以根据不同的语言和文化输出日期和时间。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = "2022-08-10 12:34:56";
try {
    Date date = sdf.parse(strDate);
    System.out.println("解析后的日期时间为:" + date);
} catch (ParseException e) {
    e.printStackTrace();
}
  1. 问题

SimpleDateFormat 类存在以下问题:

(1) 线程安全问题:SimpleDateFormat 对象是可变的,因此在多线程环境下,可能会发生并发问题。

(2) 易混淆问题:SimpleDateFormat 类提供的大写和小写字母形式可能会导致模式模棱两可。

(3) 不支持国际化问题:SimpleDateFormat 类不支持国际化,因此无法根据不同的语言和文化输出日期和时间。

三、 Java 8 时间日期 API

Java 8 引入了新的时间日期 API(Java Time API),提供了更加易于理解和使用的类和方法,并且克服了 Date 类和 SimpleDateFormat 类存在的许多问题。新的时间日期 API 是不可变的,支持线程安全和国际化,提供了更加灵活和强大的日期和时间处理能力。

  1. LocalDate

LocalDate 类表示日期,不包含时间和时区的信息。可以使用 now() 方法获得当前的日期,并且支持加减天数、月份和年份等操作。

LocalDate date = LocalDate.now();
System.out.println("当前日期为:" + date);
  1. LocalTime

LocalTime 类表示时间,不包含日期和时区的信息。可以使用 now() 方法获得当前的时间,并且支持加减小时、分钟和秒数等操作。

LocalTime time = LocalTime.now();
System.out.println("当前时间为:" + time);
  1. LocalDateTime

LocalDateTime 类表示日期和时间,不包含时区信息。可以使用 now() 方法获得当前的日期和时间,并且支持加减天数、月份和年份等操作。

LocalDateTime dateTime = LocalDateTime.now();
System.out.println("当前日期时间为:" + dateTime);
  1. ZonedDateTime

ZonedDateTime 类表示日期、时间和时区信息。可以使用 now() 方法获得当前的日期、时间和时区,并且支持加减天数、月份和年份等操作。

ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("当前日期时间和时区为:" + zonedDateTime);
  1. Instant

Instant 类表示 Unix 时间戳,即自 1970 年 1 月 1 日零时开始累计的秒数和纳秒数。可以使用 now() 方法获得当前的 Unix 时间戳,并且支持加减秒数和纳秒数等操作。

Instant instant = Instant.now();
System.out.println("当前 Unix 时间戳为:" + instant);
  1. DateTimeFormatter

DateTimeFormatter 类提供了格式化和解析日期和时间的方法,并且支持自定义模式和支持国际化。

LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strDateTime = dateTime.format(formatter);
System.out.println("当前日期时间为:" + strDateTime);
  1. 问题

Java 8 时间日期 API 不存在 Date 类和 SimpleDateFormat 类存在的问题,提供了更加易于理解和使用的类和方法,并且克服了线程安全、易混淆和不支持国际化等问题。

四、 总结

本文介绍了 Java Date 对象及时间格式化。Java Date 类表示日期和时间,可以存储从 1970 年 1 月 1 日零时开始累计的毫秒数,在多线程环境下可能会发生并发问题,并且易混淆和不支持国际化。Java 提供了 SimpleDateFormat 类来格式化和解析日期和时间,存在线程安全、易混淆和不支持国际化等问题。Java 8 引入了新的时间日期 API(Java Time API),提供了更加易于理解和使用的类和方法,并且克服了存在的许多问题。论述了常用模式,以及使用各种类和方法的代码示例,希望读者能够了解这些知识点,更好地应用它们来处理日期和时间相关的问题。文章来源地址https://www.toymoban.com/news/detail-619861.html

到了这里,关于Java Date 对象详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 常见的日期转换(Timestamp、Calendar、Date、String)

    日期类型: Timestamp: java.sql.Timestamp Calendar: java.util.Calendar Date: java.util.Date String: java.lang.String 1、Timestamp 转 Calendar 2、Timestamp 转 Date 3、Timestamp 转 String 4、Calendar 转 Timestamp 5、Calendar 转 Date 6、Calendar 转 String 7、Date 转 Calendar 8、Date 转 Timestamp

    2024年02月04日
    浏览(37)
  • String类型和Date类型相互转换(java)

    ** ** 1、format方法可以把Date类型转换成特定格式的String类型,如果Date类型和定义的SimpleDateFormat长度不一致会自动在后面补充0 2. parse方法可以把String型的字符串转换成特定格式的date类型,使用parse时字符串长度要和定义的SimpleDateFormat对象长度一致 下面test2的例子,由于位数不

    2024年02月15日
    浏览(54)
  • springboot~统一处理日期请求参数java.utils.Date和java.time.LocalDate

    日期类型的参数在从前端通过url参数传递到后端时,它会被进行格式化,如果格式化失败会出现400的错误,像日期格式默认会使用yyyy/MM/dd的格式,如果希望自己去个性化配置,我们可以通过实现WebMvcConfigurer接口的addFormatters方法来完成。 DateTimeFormatterRegistrar 实例的 setTimeFor

    2024年02月06日
    浏览(32)
  • java中日期转换Date、DateTime、TimeStamp、String之间相互转换

    1.1Date-String 2.1Date-TimeStamp 2.2TimeStamp-Date DateTime使用依赖 3.1Date-DateTime 方法1: 方法2: 3.2DateTime-Date 4.String转DateTime

    2024年02月15日
    浏览(49)
  • 【Elasticsearch教程11】Mapping字段类型之日期时间date date_nanos

    JSON没有 date 类型,但我们可以把以下类型作为日期时间存入ES。 类型 说明 字符串 日期格式的字符串,如\\\"2015-01-01\\\"或\\\"2015/01/01 12:10:30\\\" 长整型 从开始纪元(1970-01-01 00:00:00 UTC)开始的 毫秒数 整型 从开始纪元(1970-01-01 00:00:00 UTC)开始的 秒数 上面的UTC(Universal Time Coordinated) 叫

    2024年01月24日
    浏览(40)
  • 【Java】postman如何传递Date时间类型数据

    提示:遇到的问题,自己记录一下 提示:测试时需要传递Date类型数据

    2024年02月13日
    浏览(41)
  • Java Date类型返回前端后 变成时间戳

    今天遇到这样一个问题,数据库查出来的数据是 Date 日期 和 Time时间。 但是传给前端就变成了 时间戳的格式 比如\\\"yyyy-MM-dd hh:mm:ss.000+0000\\\" 数据库查询如下 前端JSON格式如下 如果想直接转成前端想要的参数呢,有几种方法 ,比如Date类型查出来后 截取固定位置的方式返回给前端

    2024年02月15日
    浏览(30)
  • 接着element ui 日期选择器el-date-picker 修改指定日期背景 点击指定背景色日期变深色

    然后点击浅绿色变深绿色 点击浅红色变深红色 默认不变 还是选中蓝色 最好隔离一下不要影响到其他日期选择器的样式

    2024年02月03日
    浏览(36)
  • element ui el-date-picker 禁止选择指定日期

    1)禁止选择当天之前的日期 禁止选择包含当天及其之前的日期 2)禁用选择当天之后的日期 禁止选择包含当天及其之后的日期 3)禁止选择自定义加载的日期,比如打开编辑框,禁止选择当前数据回显日期之前的日期 禁止选择之后  禁止选择之前   - 8.64e7 表示可选择当天时

    2024年02月11日
    浏览(165)
  • java中LocalDate、Calendar、Date类型进行加减

    java三种类型的加减,LocalDate、Calendar、Date @ 目录 1.LocalDate类型加减: 2.Calendar加减: 3.Date类型加减 以下是LocalDate类进行日期加减: 运行结果: 可以看到,使用LocalDate类进行加减操作代码比较简洁清晰,也更易读易懂。 Java中的Calendar类提供了许多方法用于对日期和时间进行加减操

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包