一、日期时间

Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。java.util.Date和SimpleDateFormatter都不是线程安全的,而LocalDate和LocalTime和最基本的String一样,是不变类型,不但线程安全,而且不能修改。以下为一些常用时间对象:

  • Instant:表示时刻,不直接对应年月日信息,需要通过时区转换
  • LocalDateTime: 表示与时区无关的日期和时间信息,不直接对应时刻,需要通过时区转换
  • LocalDate:表示与时区无关的日期,与LocalDateTime相比,只有日期信息,没有时间信息
  • LocalTime:表示与时区无关的时间,与LocalDateTime相比,只有时间信息,没有日期信息
  • ZonedDateTime: 表示特定时区的日期和时间
  • ZoneId/ZoneOffset:表示时区

1、LocalDate

       LocalDate now = LocalDate.now();
LocalDate now1 = LocalDate.now(Clock.systemUTC()); System.out.println(now);
System.out.println(now1); LocalDate of = LocalDate.of(2019, 3, 6);
//严格按照ISO yyyy-MM-dd验证,03写成3都不行
LocalDate parse = LocalDate.parse("2019-03-06");
System.out.println(of);
System.out.println(parse); System.out.println("**************now****************"); //当前开始时间
System.out.println(now.atStartOfDay());
//当月第一天日期
System.out.println(now.with(TemporalAdjusters.firstDayOfMonth()));
//本月第二天日期
System.out.println(now.withDayOfMonth(2));
//当月最后一天
System.out.println(now.with(TemporalAdjusters.lastDayOfMonth()));
System.out.println(now.getDayOfMonth());
//当月下一天
System.out.println(now.plusDays(1));
//当月上一天
System.out.println(now.minusDays(1));
System.out.println(now.getDayOfWeek());
//当月下一周
System.out.println(now.plusWeeks(1));
//当月上一周
System.out.println(now.minusWeeks(1));
System.out.println(now.getMonth() + "-" + now.getMonthValue());
//当月下一个月
System.out.println(now.plusMonths(1));
//当月上一个月
System.out.println(now.minusMonths(1)); //时间比较
System.out.println(now.isEqual(LocalDate.of(2019, 03, 06)));

2、LocalTime

        LocalTime now = LocalTime.now();
//指定时区
LocalTime now1 = LocalTime.now(Clock.system(ZoneId.systemDefault()));
LocalTime now2 = LocalTime.now(Clock.systemUTC()); System.out.println(now);
System.out.println(now1);
System.out.println(now2); System.out.println("************now************");
//清除毫秒位
System.out.println(now.withNano(0));
//获取当前的小时
System.out.println(now.getHour());
//解析时间时间也是按照ISO格式识别,但可以识别以下3种格式: 12:00 12:01:02 12:01:02.345
System.out.println(LocalTime.parse("11:58:12")); //时间比较
LocalTime other = LocalTime.of(13, 45, 59);
System.out.println(now.isBefore(other));
System.out.println(now.isAfter(other));

3、LocalDateTime

        LocalDateTime now = LocalDateTime.now();
LocalDateTime now1 = LocalDateTime.now(Clock.system(ZoneId.systemDefault()));
LocalDateTime now2 = LocalDateTime.now(Clock.systemUTC()); System.out.println(now);
System.out.println(now1);
System.out.println(now2);
     //时间格式转换
System.out.println(now.format(DateTimeFormatter.ofPattern(PATTERN_1)));
System.out.println(now.format(DateTimeFormatter.ofPattern(PATTERN_2)));
System.out.println(now.format(DateTimeFormatter.ofPattern(PATTERN_3)));

4、Date转换为LocalDateTime

  /**
* Date转换为LocalDateTime
* @return LocalDateTime
*/
public static LocalDateTime date2LocalDateTime() {
Date date = new Date();
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); return localDateTime;
}

5、LocalDateTime转换为Date

    /**
* LocalDateTime转换为Date
* @return Date
*/
public static Date localDateTime2Date() {
LocalDateTime now = LocalDateTime.now();
Instant instant = now.atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); return date;
}

6、秒与纳秒级别上的一段时间间隔

    /**
* 秒与纳秒级别上的一段时间
*/
public static void duration() { LocalDateTime from = LocalDateTime.of(2018, Month.OCTOBER, 1, 0, 0, 0);
LocalDateTime to = LocalDateTime.of(2019, Month.MARCH, 6, 23, 59, 59); Duration between = Duration.between(from, to);
System.out.println(between.toDays());
System.out.println(between.toHours());
}

源码参照:Github

Java 8 时间日期使用的更多相关文章

  1. JAVA格式化时间日期

    JAVA格式化时间日期 import java.util.Date; import java.text.DateFormat; /** * 格式化时间类 * DateFormat.FULL = 0 * ...

  2. Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题【转】

    Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题 http://blog.didispace.com/Spring-Boot-And-Feign- ...

  3. java开源时间/日期库Joda-Time

    任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.使用 JDK 完成这项任务将非常痛苦和繁琐.现在来看看 Joda Time,一 ...

  4. Java中时间日期格式化

    1.与日期时间相关的类:      第一:java.util.Date;                           将时间作为一个整体使用.处理时,使用Date类较为简便      第二:j ...

  5. Java 8 时间日期库的20个使用示例

    java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...

  6. Java 8 时间日期库的20个使用演示样例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...

  7. Java基础/时间日期格式

    Java时间日期格式转换 一.Date转String和String转Date 参考博客:https://www.cnblogs.com/sharpest/p/7879377.html public s ...

  8. Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题

    LocalDate.LocalTime.LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Boot或使 ...

  9. Java实现时间日期格式转换示例

    package com.hanqi.util; import java.text.ParseException; import java.text.SimpleDateFormat; import j ...

  10. Java 8 时间日期

    啦啦啦 package lime.java1_8.time; import java.time.*; import java.time.format.DateTimeFormatter; import ...

随机推荐

  1. Delphi VS C语言类型转换对照

    Delphi VS C语言类型转换对照   When converting C function prototypes to Pascal equivalent declarations, it's ...

  2. 一 安装docker(详解)

    一.安装docker 1 Docker 要求 CentOS 系统的内核版本高于 3.10 执行命令:uname -r 2 添加yum源: yum-config-manager --add-repo h ...

  3. Keras(三)backend 兼容 Regressor 回归 Classifier 分类 原理及实例

    backend 兼容 backend,即基于什么来做运算 Keras 可以基于两个Backend,一个是 Theano,一个是 Tensorflow 查看当前backend import keras ...

  4. NLP(十六) DL在NLP中的应用

    深度学习中的核心主题是卷积神经网络(CNN)和循环神经网络(RNN) 卷积神经网络 CNN用于图像处理 卷积: 原始图像 5×5 滤波器 3×3 滤波器以步长大于小于1,到处平移,并与原始图像里的3× ...

  5. testlink+vertrigoServ搭建测试用例管理系统

    1.testlink简介 Testlink是一个开源的基于web的测试用例管理系统,主要功能是测试用例的创建.管理和执行,并且提供了一些简单的统计功能. 目前的公司没有专用的测试用例管理系统,为了测试 ...

  6. Features Track 2018徐州icpc网络赛 思维

    Morgana is learning computer vision, and he likes cats, too. One day he wants to find the cat moveme ...

  7. CodeForces 293E Close Vertices 点分治

    题目传送门 题意:现在有一棵树,每条边的长度都为1,然后有一个权值,求存在多少个(u,v)点对,他们的路劲长度 <= l, 总权重 <= w. 题解: 1.找到树的重心. 2.求出每个点到 ...

  8. 解决问题:SpringMvc中转发的html文件中文是乱码

    目录 1.环境说明,以及前言 2.问题描述: 3.失败的方法(这里写失败并不代表在其他情况不管用) 3.1 html网页本身编码不是UTF-8(推荐尝试) 3.2 web.xml中没有设置配置编码方式 ...

  9. MPA JS CSS预处理方案

    1.WebPack 添加配置文件webpack.config.js,直接在当前目录运行 webpack. var basepath = '/root/webapps/happ'; var glob = ...

  10. Erlang模块erl翻译

    命令:     erl 概述:     Erlang模拟器 描述:     erl程序启动一个Erlang运行时系统.准确的信息是依赖于系统的(举例,erl是否是脚本或程序,其它程序调用).     ...