首页 > 数据库 >java8 LocalDateTime/LocalDate/LocalTime、java.util.Date/java.sql.Date区别及日期转换方法

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

时间:2023-06-28 14:33:46浏览次数:51  
标签:util java format LocalDateTime 转换方法 time 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);

标签:util,java,format,LocalDateTime,转换方法,time,Date
From: https://blog.51cto.com/u_15561616/6571882

相关文章

  • 在linux上启动arthas报“Can not find java process”
    发生背景完整报错信息:[***@localhost~]$java-jararthas-boot.jar[INFO]JAVA_HOME:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b03-1.el7.x86_64/jre[INFO]arthas-bootversion:3.6.9[INFO]Cannotfindjavaprocess.Trytorun`jps`commandliststheinstrume......
  • 3、Apache Kudu集成impala(shell和java操作)的详细操作
    ApacheKudu系列文章1、ApacheKudu介绍及架构、工作原理、两种部署方式、使用限制详解2、ApacheKudu-javaapi操作kudu详细示例以及kudu的三种实现示例3、ApacheKudu集成impala(shell和java操作)的详细操作(文章目录)本文简单的介绍了通过impala操作kudu,包括通过shell和......
  • 浅谈 Kotlin 与 Java 互操作 (上)
    前言浅谈Kotlin与Java互操作(上)Kotlinis100%interoperablewithJavaandAndroidKotlin官网的一句标语,其旨意是表达kotlin的Interoperable-互操作特性互操作就表示Kotlin中可以调用Java的开放接口来访问成员属性和成员方法,同时在Java代码中也百分百兼容Kotlin......
  • Java-IDEA的基础设置及插件安装,让IDEA更好用!
     Java-IDEA的基础设置及插件安装,让IDEA更好用!IDEA简单配置教程:https://mp.weixin.qq.com/s/Z5QLYyvjiiS0xg9wpSTvewIDEA高效使用插件:https://mp.weixin.qq.com/s/ShnHX9uxd4esiYHOA8TZvQIDEA快捷键操作指南:https://blog.csdn.net/qq_38963960/article/details/89552704 ......
  • java 异步方法总结(减少主线程阻塞)
    主要点第一点:@Async只能使用到被代理的对象方法上,即代理类的入口方法处,且方法必须是public的。第二点:事务处理机制使用@Async异步注解不能和@Transaction事务注解在同一个方法上同时使用,不然事务注解将无效。要使用事务,需要把事务注解提取到方法里面的子方法上。  代码实......
  • 2、Apache Kudu-java api操作kudu详细示例以及kudu的三种实现示例
    ApacheKudu系列文章1、ApacheKudu介绍及架构、工作原理、两种部署方式、使用限制详解2、ApacheKudu-javaapi操作kudu详细示例以及kudu的三种实现示例3、ApacheKudu集成impala(shell和java操作)的详细操作(文章目录)本文介绍了javaapi操作kudu详细示例以及kudu的三种......
  • JAVA常用类---静态内部类
    publicclassOuter{privateStringname="李四";privateStringsex="男";//静态类和外部类权限一样/*外部调用Outer.Interinter=newOuter.Inter();Outer.Inter仅表示包含关系,如果是成员类应为Outer.Interinter=newOuter().Inter();还需要导......
  • 使用 IntelliJ IDEA 开发 Azure Function APP (Java)
    使用IntelellJIDEA开发AzureFunctionAPP(Java)前提Azure账户并有可食用的订阅。创建免费的Azure账户。Azure支持的JavaDevelopmentKit(JDK),JDK8或JDK11。IntelliJIDEA无限制版本或社区版本均可。Maven3.5+最新的FunctionCoreTools安装插件并登......
  • java基础
    一、注释、标识符、关键字注释(comments)代码量少的时候我们能看懂,项目结构复杂的时候我们需要用到注释,使项目具有更好的可读性。注释并不会被执行,是写给我们人看的书写注释是一个非常好的习惯Java中的注释有三种单行注释:“//注释一行”多行注释:“/**/注释多......
  • Android 中高级面试原理:热修复与插件化基础—Java与Android虚拟机
    一、Java虚拟机(JVM)1、JVM整体结构使用javac将java文件编译成class文件。类加载器(ClassLoader)将class字节码加载进JVM对应的内存中。JVM将内存分配给方法区、堆区、栈区、本地方式栈4个部分,这4个部分分别存储字节码不同的部分。垃圾回收器(gc)会管理整个内存空间中的垃圾。2、Java代码......