很久以前java8中就推出了新的Time API,旨在解决旧版Date和Calendar的缺陷。讲道理真的挺好用的,不过由其他工具对新版time的兼容并不够完善,导致现在使用还不够普及。大家都还在用老的Date类,苦?的封装时间工具函数,感?真的没意思。

(一)旧版Time/Date类的缺陷

(1)线程不安全:

首先旧版本的时间类是线程不安全的,在多线程操作同一个时间类实例时,会抛出异常。而新版本的时间工具全部都是线程安全的。

(2)设计混乱、可读性不好:

旧版本的java.util.Date,虽然名字叫Date,?是其实既包含日期也包含时间。同时在mysql中也有个java.sql.Date,这两个Date名字一摸一样,但是mysql的Date是不包含时间的。另外对日期格式化的工具却在java.text包中。包比较混乱,对我们程序盐多有不便。

(3)没有良好的时区方法支持:

新版本的时间类提供了非常良好的时区API,旧版本需要使用java.util.Calendar and java.util.TimeZone 等类。

(二)新版日期时间API的使用

1.LocalDate的使用:

(1)轻松的实现日期和周间的转换

// 获取2016年6月12号是周几
LocalDate.parse("2016-06-12").getDayOfWeek();

(2)轻松的判断是不是闰年

boolean leapYear = LocalDate.now().isLeapYear();

(3)轻松的获取每天的起始时间和结束时间

LocalDateTime beginningOfDay = LocalDate.parse("2016-06-12").atStartOfDay();

2.LocalTime的使用:

(1)轻松的获取时间最大值

// 23:59:59.99
LocalTime maxTime = LocalTime.MAX

(2)轻松的进行时间增减

(1)轻松的获取巴黎的时区

ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);

3.LocalDateTime的使用:

LocalDateTime包含日期和时间,是之前两者的合集,这里就不详细介绍了。

(三)新版时区API的使用

(1)轻松的获取巴黎的时区

ZoneId zoneId = ZoneId.of("Europe/Paris");

(2)将本地时区时间转为其他时区时间:

ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);

(四)获取日期时间间隔

// 日期间隔天数
int five = Period.between(finalDate, initialDate).getDays();
// 时间间隔秒数
int thirty = Duration.between(finalTime, initialTime).getSeconds();

java8中LocalDate、LocalTime、LocalDateTime介绍相关推荐

  1. java8的LocalDate、LocalDateTime和之前的Date、Calendar

    背景 之前研究了一下java里边的Date和Calendar是怎么实现的(<Calendar源码--JDK是怎么计算时间的>),然后发现有文章介绍到java8有LocalDate,然后想着 ...

  2. Java8中 Date和LocalDateTime的相互转换

    转载自  Java8中 Date和LocalDateTime的相互转换 一.在Java 8中将Date转换为LocalDateTime 方法1: 将Date转换为LocalDatetime,我们可以使 ...

  3. java年月日时分秒格式_Java 日期时间 LocalDate LocalTime LocalDateTime类

    // LoacalDate, LocalTime, LocalDateTime类// 不要使用构造器来构造LocalDate类的对象.实际上,应该使用LocalDate.now()静态工厂方法代表你调 ...

  4. jdk8中新增的日期处理类LocalDate,LocalTime,LocalDateTime,ZoneId,ZonedDateTime详解

    基本概念 时刻 所有计算机系统内部都用一个整数表示时刻,这个整数是距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数,可以理解时刻就是绝对时间,它与时区无关; 不同时区对同一时刻的解读,即年月 ...

  5. java8 时间处理 LocalDate LocalTime LocalDateTime 及毫秒转换

    LocalDate 各种和日期的操作,以天为最小单位,支持 日,月,年,星期的增加和减少,计算方便,格式化灵活.没有时分秒. LocalTime 没有日期,只是时间,就是时分秒,毫秒,可以选择不用毫秒 ...

  6. 时间处理相关类(Calendar,Instant,LocalDate,LocalTime,LocalDateTime)

    Calendar Calendar的创建 Calendar calendar=Calendar.getInstance(); 获取当前时间的年,月,日,时,分,秒 System.out.println ...

  7. Java8中 LocalDate和java.sql.Date的相互转换

    一.简述 首先,Java 8引入了java.time.LocalDate来表示一个没有时间的日期.其次,使用Java 8版本,还需要更新java.sql.Date,以便为LocalDate提供支持,包 ...

  8. 如Java8的LocalDate与Date相互转换、ZonedDateTime等常用操作包含多个使用示例、Java8时区ZoneId的使用方法、Java8时间字符串解析成类

    下面将依次介绍 Date转Java8时间类操作 ,Java8时间类LocalDate常用操作(如获得当前日期,两个日期相差多少天,下个星期的日期,下个月第一天等) 解析不同时间字符串成对应的Java8 ...

  9. Java 8日期– LocalDate,LocalDateTime,即时

    Java 8 Date Time API is one of the most sought after change for developers. Java has been missing a ...

最新文章

  1. Unity 播放音频文件
  2. redmine 贴图操作
  3. 很简单的自定义友好链接实现 .net core 2
  4. 汉诺塔问题 hdu 2064 hdu1997
  5. 【翻译】InterlockedIncrement内部是如何实现的?
  6. swift1.2新增和改动
  7. Chirp信号及其生成
  8. 一篇文章彻底搞懂海明码
  9. CSU - 2085 手游大佬(天数计算)
  10. c语言从键盘输入5阶方阵,输入5×5阶的矩阵,编程实现: (1)求两条对角线上的各元素之和....
  11. 基于MSP430G2553点亮TM1637数码管
  12. 中继器故障诊断与排除
  13. 2020年数学建模国赛A题题目和解题思路
  14. flash特效原理 图片切换滚动
  15. kali安装中文拼音googlepinyin之坑
  16. SVN的使用教程总结
  17. Unable to find a specification forXXnot added the source repo that hosts the Podspec to your Podfile
  18. Arduino - 315/433MHz RF无线收发模块
  19. 麒麟电脑linux微信版本过低,在优麒麟Ubuntu Kylin 20.04系统上快速安装微信和QQ的方法...
  20. 北斗授时设备(PTP主时钟)模块化设计原理

热门文章

  1. java 三位数的水仙花数
  2. 2014年考研英语二作文PartB图表题
  3. 发动机的工作原理,你知道吗?
  4. 怎样在C语言程序中使用功能键和箭头键?
  5. 优秀程序员必备素质——快速调试
  6. 再见腾讯,创业我来了!!!
  7. 迈出从3K到1W的重要一步——掌握设计模式
  8. 插件式架构设计实践:插件式系统架构设计简介
  9. 解决: bash: unzip: command not found、linux 安装 zip 命令
  10. 8月12号=》391页-395页