java8 LocalDateTime/LocalDate/LocalTimejava.util.Date/java.sql.Date区别及日期转换方法

Posted QQ_851228082

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java8 LocalDateTime/LocalDate/LocalTimejava.util.Date/java.sql.Date区别及日期转换方法相关的知识,希望对你有一定的参考价值。

先介绍一下 ,LocalDateTime/LocalDate/LocalTime、java.util.Date/java.sql.Date区别

LocalDateTime/LocalDate/LocalTime

java.time.LocalDateTime,是一个日期+时间不带时区,它是个不可更改对象,精确到纳秒。它的日期可以认为是生日,它的时间可以认为是挂钟的时间,比较LocalDateTime时用equals,不要用==或者hashCode。

java.time.LocalDate,是不可变的对象,表达的是日期,它不存储或表达时间和时区,通常以年-月-日的形式展示,比如生日。
java.time.LocalTime,是不可变的对象,表达的是时间,它不存储或表达日期和时区,通常以时-分-秒的形式展示,比如10:15:30。

java.util.Date/java.sql.Date

java.util.Date是专门用来表达UTC(coordinated universal time)的,但jvm宿主机可能不能准确表达UTC。因为在操作系统中,认为1天=24小时60分钟60秒,但utc每一年或二年,会多一秒“闰秒”,闰秒总是会加到一天的最后一秒,并且总是6.30号或者12.31号。
GMT(Greenwich mean time)=universal time (UT),格林尼治时间是民间称呼,ut是科学家叫法,这两者是一样的。但UTC(coordinated universal time)
UTC基于原子时钟,ut是基于天文观察,在实践中,两者差异可以忽略不计,为了让utc与ut一致,utc引入了闰秒。
Date的精度是毫秒。

java.sql.Date,对应数据库中的Date字段类型,数据库中的Date没有时间只有日期,因此java.sql.Date也没有时分秒,只有日期,它带有时区。

总结

  • java.time.LocalDateTime/java.util.Date可以认为对应mysql中的datetime/timestamp,因为都是日期+时间。java.time.LocalDateTime/datetime是无时区的,java.util.Date/timestamp是有时区的。
  • java.sql.Date/java.time.LocalDate对应数据库中的Date,因为都是日期。
  • java.time.LocalTime对应数据库中的Time,因为都是时间。

LocalDateTime 字符串/时间转换

从字符串转为时间通常使用LocalDateTime的静态方法parse;
从时间转为字符串通常使用LocalDateTime的实例方法format;
这两个方法都要用到DateTimeFormatter,通过ofPattern可生成DateTimeFormatter

final LocalDateTime now = LocalDateTime.now();
//创建一个日期时间格式器
final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
//LocalDateTime format实例方法用来将时间转为字符串
final String format = now.format(dateTimeFormatter);
System.out.println(format);
//LocalDateTime静态方法parse可以解析字符串
final LocalDateTime parse = LocalDateTime.parse(format, dateTimeFormatter);
System.out.println(parse);

以上是关于java8 LocalDateTime/LocalDate/LocalTimejava.util.Date/java.sql.Date区别及日期转换方法的主要内容,如果未能解决你的问题,请参考以下文章

java [Java8高阶函数] #java8

Java8新特性不了解Optional类,简历上别说你懂Java8!!

Java8新特性不了解Optional类,简历上别说你懂Java8!!

Java8新特性一张图带你领略Java8有哪些新特性

Java8新特性

《Java8实战》读书笔记13:Java8 与 Scala