大家好,我是乐字节的小乐,上篇文章讲述了《Java8新特性之Optional》,接下来,小乐将接着讲述Java8新特性之Date API

2019日历

Java8之Date API

Java 8通过发布新的Date-Time API来进一步加强对日期与时间的处理。 旧版的 Java 中,日期时间 API 存在诸多问题 :

  • 非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,
  • 设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。
  • 时区处理麻烦 − 日期类并不提供国际化,没有时区支持

Java 8 在 java.time 包下提供了很多新的 API。以下为两个比较重要的 API:

  • Local(本地) : 简化了日期时间的处理,没有时区的问题。
  • Zoned(时区) − 通过制定的时区处理日期时间。

新的java.time包涵盖了所有处理日期,时间,日期/时间,时区,时刻(instants),过程(during)与时钟(clock)的操作。

7.1、LocalDateTime

LocalDateTime

LocalDateTime ldt = LocalDateTime.now();// 获取系统当前时间System.out.println(ldt);LocalDateTime ldt2 = LocalDateTime.of(2019, 01, 01, 12, 12, 12, 888000000);// 构建LocalDateTime对象ldtSystem.out.println(ldt2);// 获取明年此时的时间LocalDateTime ldt3 = ldt.plusYears(1);System.out.println(ldt3);// 获取去年此刻时间LocalDateTime ldt4 = ldt.minusYears(1);System.out.println(ldt4);// 获取年System.out.println(ldt.getYear());// 获取月份System.out.println(ldt.getMonthValue());// 获取本月第某天System.out.println(ldt.getDayOfMonth());// 获取时System.out.println(ldt.getHour());// 获取分System.out.println(ldt.getMinute());// 获取秒System.out.println(ldt.getSecond());// 获取纳秒System.out.println(ldt.getNano());

7.2、时间戳

时间戳:以Unix元年:1970年1月1日 00:00:00 至目前时间之间的毫秒值

public static void testInstant(){ // 时间戳 Instant Instant ins1 = Instant.now(); // 默认获取UTC时间,协调世界时 System.out.println(ins1); OffsetDateTime odt = ins1.atOffset(ZoneOffset.ofHours(8)); System.out.println(odt); System.out.println(ins1.toEpochMilli()); Instant ins2 = Instant.ofEpochSecond(60); System.out.println(ins2);}

7.3、日期时间间隔计算:Duration、Period

public static void testDuration(String[] args) { Instant ins1 = Instant.now(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } Instant ins2 = Instant.now(); Duration dura = Duration.between(ins1, ins2); System.out.println(dura.toMillis()); System.out.println("----------------------"); LocalTime lt1 = LocalTime.now(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } LocalTime lt2 = LocalTime.now(); Duration dura2 = Duration.between(lt1, lt2); System.out.println(dura2.toMillis()); }​ public static void testPeriod(){ LocalDate ld1 = LocalDate.of(2015, 2, 2); LocalDate ld2 = LocalDate.now(); Period period = Period.between(ld1, ld2); System.out.println(period); System.out.println("相差" + period.getYears() + "年" + period.getMonths() + "月" + period.getDays() + "天");​ }

7.4、时间校正:TemporalAdjuster

public static void testTemporalAdjuster(){ LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); LocalDateTime ldt2 = ldt.withDayOfMonth(10); System.out.println(ldt2); LocalDateTime ldt3 = ldt.with(TemporalAdjusters.next(DayOfWeek.SATURDAY)); System.out.println(ldt3);}

7.5、日期时间格式化

public static void testDateFormate(){ DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE; LocalDateTime ldt = LocalDateTime.now(); String strDate = ldt.format(dtf); System.out.println(strDate); System.out.println("----------------------------"); DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); String strDate2 = dtf2.format(ldt); System.out.println(strDate2); System.out.println("-----------------------------"); LocalDateTime newDate = ldt.parse(strDate2, dtf2); System.out.println(newDate); }

7.6、TimeZone 时区处理

 // 时区的处理 public static void testTimeZone(){ LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Europe/Dublin")); System.out.println(ldt); LocalDateTime ldt2 = LocalDateTime.now(ZoneId.of("Europe/Dublin")); ZonedDateTime zdt = ldt2.atZone(ZoneId.of("Europe/Dublin")); System.out.println(zdt); }

Java8新特性之Date API就先讲到这里。欢迎继续关注乐字节,下次再给大家带来Java新特性之Base64、重复注解与类型注解。

java8新特性_Java8新特性之Date API|乐字节相关推荐

  1. java8 stream遍历_Java8新特性:Stream流详解

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

  2. java8 lambda 接口_Java8新特性之一:Lambda表达式

    Java8是自java5之后最重大的一次更新,它给JAVA语言带来了很多新的特性(包括编译器.类库.工具类.JVM等),其中最重要的升级是它给我们带来了Lambda表达式和Stream API. 1. ...

  3. java8遍历数组_java8新特性,使用流遍历集合

    在这篇"Java 8新特性教程"系列文章中,我们会深入解释,并通过代码来展示,如何通过流来遍历集合,如何从集合和数组来创建流,以及怎么聚合流的值. 在之前的文章"遍历.过 ...

  4. java8新特性_Java8新特性_lambda表达式

    lambda介绍 λ ,希腊字母表中排序第十一位的字母,英语名称为Lambda. lambda 表达式,也可称为闭包,它是推动==Java 8== 发布的最重要新特性,允许把函数作为一个方法的参数(函 ...

  5. java8的stream特性_Java8新特性介绍:Stream API

    Stream API 了解Stream Java8中有两个比较大的改变 Lambda表达式 Stream API (java.util.stream.*) Stream是Java8中处理集合的关键抽象 ...

  6. java8 lambda判断_Java8新特性-Lambda表达式

    Predicate接口使用 请在测试类main方法中完成以下需求 已知有Integer[] arr = {-12345, 9999, 520, 0,-38,-7758520,941213} a) 使用 ...

  7. java8 list切片_Java8新特性_创建 Stream、流筛选与切片

    package com.atguigu.java8; import java.util.ArrayList; import java.util.Arrays; import java.util.Ite ...

  8. java8 重复注解_Java8新特性_重复注解与类型注解

    1.总结 1.忘记注解上该写什么时,可以随意写一个注解然后点击进去参考.复制 2.默认情况下不支持重复注解,需要定义容器 3.标注注解为@Repeatable 4.若需要获取注解的值,可以通过反射获取 ...

  9. java8 collect 类型转换_java8新特性之list转换

    // 根据id去重 List unique = appleList.stream().collect( collectingAndThen( toCollection(() -> new Tre ...

最新文章

  1. 谷歌新研究:基于数据共享的神经网络快速训练方法
  2. mvc 404错误 php,java - springmvc 请求无法到达controller,出现404错误
  3. log4j之log4j2.xml使用
  4. android 开机动画 渐变,[Parallax Animation]实现知乎 Android 客户端启动页视差滚动效果...
  5. Java ObjectStreamClass lookup()方法与示例
  6. 清北学堂----北京集训
  7. nested set model应用系列文章-基于后根跳跃遍历的规则匹配算法
  8. 干货 | 平面设计、UI 设计和视觉设计的区别
  9. Mysql之注入工具-yellowcong
  10. 解决微信公众号注册提示“邮箱已被占用”(亲测)
  11. c语言简易仙侠文字游戏
  12. ce修改魔兽争霸服务器存档,魔兽争霸3用CE修改找金钱基址
  13. 在鹅厂如何带薪刷视频?
  14. 初探强化学习(7)基于模型的强化学习的应用综述
  15. 糖糖班趣事之棒棒糖篇
  16. 当 Python 遇到数据库,这个模块就变得超级好用
  17. 培养数字化人才 护航大学生就业 千锋教研院2022年教研战略发布会隆重举行
  18. 用Java实现简易计算器
  19. 状态的进行中、未开始、已结束状态的排序
  20. [转帖]欧洲中世纪宗教饰品(哥特艺术精品展示)

热门文章

  1. C语言实现九九乘法表共9行9列,重点考察for循环的掌握情况!
  2. Long-read human genome sequencing and its applications
  3. R Learnilng 十八讲13-17
  4. 实验四 数据库SQL语言基础编程
  5. linux改组ID号会对数据库有影响么,truncate操作导致DATA_OBJECT_ID改变
  6. sound.js # pixi辅助插件 — 中文翻译教程
  7. 快速去阴影--Fast Shadow Detection from a Single Image Using a Patched Convolutional Neural Network
  8. ClickHouse系列教程二:使用航班飞行数据
  9. GO语言教程1:Windows环境下GO语言的安装与配置
  10. C++_vptr与vtbl,虚函数与虚表