java8 LocalDateTime/LocalDate/LocalTime、java.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);
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LocalDateTime转换为java.sql.Date的方法是将LocalDateTime先转换为LocalDate,然后再将LocalDate转换为java.sql.Date。可以使用toLocalDate()方法将LocalDateTime转换为LocalDate,然后使用valueOf(LocalDate)方法将LocalDate转换为java.sql.Date。以下是一个示例代码: ```java import java.time.LocalDateTime; import java.time.LocalDate; import java.sql.Date; public class Test { public static void main(String[] args) { LocalDateTime dateTime = LocalDateTime.now(); System.out.println("LocalDateTime = " + dateTime); LocalDate localDate = dateTime.toLocalDate(); System.out.println("LocalDate = " + localDate); Date sqlDate = Date.valueOf(localDate); System.out.println("java.sql.Date = " + sqlDate); } } ``` 在这个示例中,先创建了一个LocalDateTime对象dateTime,然后使用toLocalDate()方法将其转换为LocalDate对象localDate,最后使用valueOf(LocalDate)方法将localDate转换为java.sql.Date对象sqlDate。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java8 LocalDateTime/LocalDate/LocalTimejava.util.Date/java.sql.Date区别日期转换方法](https://blog.csdn.net/wangjun5159/article/details/115002441)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Java8中 LocalDatejava.sql.Date的相互转换](https://blog.csdn.net/hspingcc/article/details/73332125)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值