文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java.sql.Date和java.util.Date的区别有哪些

2023-07-05 16:51

关注

这篇文章主要介绍“java.sql.Date和java.util.Date的区别有哪些”,在日常操作中,相信很多人在java.sql.Date和java.util.Date的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java.sql.Date和java.util.Date的区别有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

参考答案

JDK1.8 中的日期与时间 API

为什么 JDK 1.8 之前的时间与日期 API 不好用?

java.util.Date 是从 JDK 1.0 开始提供,易用性差

JDK 1.1 废弃了 Date 中很多方法,新增了并建议使用 java.util.Calendar 类

DateFormat 格式化时间,线程不安全

为了解决 JDK 中时间与日期较难使用的问题,JDK 1.8 开始,吸收了 Joda-Time 很多功能,新增 java.time 包,加了新特性

LocalDate本地日期
LocalTime本地时间
LocalDateTime本地日期+时间
Instant时间戳,适合机器时间计算
Duration时间差
Period年、月、日差
ZoneOffset时区偏移量
ZonedDateTime带时区的日期时间
Clock时钟,获取其他地区时钟
DateTimeFormatter时间格式化
Temporal日期-时间获取值的字段
TemporalAdjusteremporal 对象转换,实现自定义
ChronoLocalDate日历系统接口

常用 api

 获取当前日期

LocalDate.now()

创建日期

LocalDate date = LocalDate.of(2020, 9, 21)

获取年份

date.getYear() //通过 TemporalField 接口的实现枚举类 ChronoField.YEAR 获取年份date.get(ChronoField.YEAR)

获取月份

date.getMonth().getValue() //通过 TemporalField 接口的实现枚举类 ChronoField.MONTH_OF_YEAR 获取月份date.get(ChronoField.MONTH_OF_YEAR)

获取日

date.getDayOfMonth() //通过 TemporalField 接口的实现枚举类 ChronoField.DAY_OF_MONTH 获取日date.get(ChronoField.DAY_OF_MONTH)

获取周几

date.getDayOfWeek()

获取当前月多少天

date.lengthOfMonth()

获取当前年是否为闰年

date.isLeapYear()

当前时间

LocalTime nowTime = LocalTime.now()

创建时间

LocalTime.of(23, 59, 59)

获取时

nowTime.getHour()

获取分

nowTime.getMinute()

获取秒

nowTime.getSecond()

获取毫秒

nowTime.getLong(ChronoField.MILLI_OF_SECOND)

获取纳秒

nowTime.getNano()

创建日期时间对象

LocalDateTime.of(2020, 9, 21, 1, 2, 3);LocalDateTime.of(date, nowTime);

获取当前日期时间对象

LocalDateTime.now()

通过 LocalDate 创建日期时间对象

date.atTime(1, 2, 3)

通过 LocalTime 创建日期时间对象

nowTime.atDate(date)

通过 LocalDateTime 获取 LocalDate 对象

LocalDateTime.now().toLocalDate()

通过 LocalDateTime 获取 LocalTime 对象

LocalDateTime.now().toLocalTime()

解析日期字符串

LocalDate.parse("2020-09-21")

解析时间字符串

LocalTime.parse("01:02:03")

解析日期时间字符串

LocalDateTime.parse("2020-09-21T01:02:03", DateTimeFormatter.ISO_LOCAL_DATE_TIME)

方便时间建模、机器处理的时间处理类 Instant,起始时间 1970-01-01 00:00:00

//起始时间 + 3 秒Instant.ofEpochSecond(3)//起始时间 + 3 秒 + 100 万纳秒Instant.ofEpochSecond(3, 1_000_000_000)//起始时间 + 3 秒 - 100 万纳秒Instant.ofEpochSecond(3, -1_000_000_000))//距离 1970-01-01 00:00:00 毫秒数Instant.now().toEpochMilli()

Duration:LocalTime、LocalDateTime、Intant 的时间差处理

Duration.between(LocalTime.parse("01:02:03"), LocalTime.parse("02:03:04"))Duration.between(LocalDateTime.parse("2020-09-21T01:02:03"), LocalDateTime.parse("2020-09-22T02:03:04"))Duration.between(Instant.ofEpochMilli(1600623455080L), Instant.now())

日期时间,前、后、相等比较

//2020-09-21 在 2020-09-18 前?LocalDate.parse("2020-09-21").isBefore(LocalDate.parse("2020-09-18"))//01:02:03 在 02:03:04 后?LocalTime.parse("01:02:03").isAfter(LocalTime.parse("02:03:04"))

修改日期、时间对象,返回副本

//修改日期返回副本LocalDate.now().withYear(2019).withMonth(9).withDayOfMonth(9)LocalDate date4Cal = LocalDate.now();//加一周date4Cal.plusWeeks(1)//减两个月date4Cal.minusMonths(2)//减三年date4Cal.minusYears(3)

格式化

//格式化当前日期LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE)//指定格式,格式化当前日期LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))指定格式,格式化当前日期时间//格式化当前日期时间LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd  HH:mm:ss"))

解析

//日期解析LocalDate.parse("2020-09-20")//指定格式,日期解析LocalDate.parse("2020/09/20", DateTimeFormatter.ofPattern("yyyy/MM/dd"))//指定格式,日期时间解析LocalDateTime.parse("2020/09/20 01:01:03", DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))

时区

//上海时区ZoneId shanghaiZone = ZoneId.of("Asia/Shanghai");//设置日期为上海时区LocalDate.now().atStartOfDay(shanghaiZone)//设置日期时间为上海时区LocalDateTime.now().atZone(shanghaiZone)//设置 Instant 为上海时区Instant.now().atZone(shanghaiZone)

子午线时间差

//时间差减 1 小时ZoneOffset offset = ZoneOffset.of("-01:00");//设置时间差OffsetDateTime.of(LocalDateTime.now(), offset)

到此,关于“java.sql.Date和java.util.Date的区别有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯