原先的时间 api  大部分已经过时了

Date构造器 需要传入年月日  但是对时间的加减操作比较麻烦

Calenda  加减比较方便

使用 LocalDate、 LocalTime、 LocalDateTime


LocalDate、 LocalTime、 LocalDateTIme 类的实例是不可变的对象。分别使用ISO-8601日历系统的日期、时间、日期和时间。他们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。

他们的使用方式一一模一样,但是专一程度不一样。专门表示日期,专门表示时间,表示时间好日期

加减操作时候,有很多API可以使用的。根据情况场景自己选择。

加法操作

减法操作:

 @Test
public void test1(){
//方式一
LocalDateTime dateTime1 = LocalDateTime.now();
System.out.println(dateTime1); //方式二
LocalDateTime dateTime2 = LocalDateTime.of(2018, 05, 21, 13, 22, 33);
System.out.println(dateTime2); //获取的操作
System.out.println( dateTime1.getYear());
System.out.println(dateTime1.getHour());
}

以上是人读的,下面是计算机读的:

Instant: 时间戳

Unix元年, 1970年1月1日00:00:00 到某个时间之间的毫秒值

   @Test
public void test(){
Instant now = Instant.now(); //默认是获取的 UTC 时区
System.out.println(now); OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));//相差8个时区的情况
System.out.println(offsetDateTime);
//各种属性值的获取
System.out.println(now.getEpochSecond());
//1000s
Instant instant = Instant.ofEpochSecond(1000); //从unix时间开始加1000秒
System.out.println(instant);
}

补充:

API获取个各种属性

计算两个时间的间隔:

Duration: 计算两个时间之间的间隔

Period: 计算两个日期之间的间隔

   @Test
public void test3() throws InterruptedException {
Instant now1 = Instant.now();
Thread.sleep(1000);
Instant now2 = Instant.now();
//计算两个时间戳的间隔
Duration between = Duration.between(now1, now2);
System.out.println(between.getSeconds());

这块儿API很多:

duration也有很多API可以调用的!可以做加减运算!

 @Test
public void test3() throws InterruptedException {
Instant now1 = Instant.now();
Thread.sleep(1000);
Instant now2 = Instant.now();
//计算两个时间戳的间隔
Duration between = Duration.between(now1, now2);
System.out.println(between.getSeconds()); LocalTime now3 = LocalTime.now();
Thread.sleep(1000);
LocalTime now4 = LocalTime.now();
System.out.println(Duration.between(now3, now4).toMillis());
}

日期的间隔:

 @Test
public void test4(){
LocalDate of = LocalDate.of(2016, 2, 5);
LocalDate now = LocalDate.now();
Period between = Period.between(now, of);
System.out.println(between);
System.out.println(between.getYears());
System.out.println(between.getMonths());
}

获取当前月的第一天和最后一天

LocalDateTime date = LocalDateTime.now();
LocalDateTime firstday = date.with(TemporalAdjusters.firstDayOfMonth());
LocalDateTime lastDay = date.with(TemporalAdjusters.lastDayOfMonth());
System.out.println(“firstday:” + firstday);
System.out.println(“lastDay:” + lastDay);

Java8的时间日期API的更多相关文章

  1. java8新特性——时间日期API

    传统的时间 API 存在线程安全的问题,在多线程开发中必须要上锁,所以 java8 现在为我们提供了一套全新的时间日期 API ,今天进来学习一下java8 的时间日期 API. 一.使用 Local ...

  2. Java8新特性(三)——Optional类、接口方法与新时间日期API

    一.Optional容器类 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. 查看结构图可以看到有如下常用方法: of(T)—— ...

  3. JAVA8学习——新的时间日期API&Java8总结

    JAVA8-时间日期API java8之前用过的时间日期类. Date Calendar SimpleDateFormat 有很多致命的问题. 1.没有时区概念 2.计算麻烦,实现困难 3.类是可变的 ...

  4. Java 8 的时间日期 API

    上一篇文章『Java 的时间日期 API』中,我们学习了由 Date.Calendar,DateFormat 等组成的「传统时间日期 API」,但是传统的处理接口设计并不是很友好,不易使用.终于,Ja ...

  5. Java8中时间日期库的20个常用使用示例

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

  6. Java 8 新的时间日期 API

    1. 概述 1.1 简介 Java 8 引入了一套全新的时间日期API,操作起来更简便.简单介绍下,LocalDate和LocalTime和LocalDateTime的使用: java.util.Da ...

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

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

  8. JAVASE(十二) Java常用类: 包装类、String类、StringBuffer类、时间日期API、其他类

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.包装类 1 .1 八个包装类 ​ 1. 2 基本数据类型,包装类,String者之间的转换 ​ 2. ...

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

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

随机推荐

  1. 移动App性能评测与优化-Android内存测试 ,DVM原理

    常见的测试方法包括Monkey/UIAutomator类的常规压力测试,大数据/操作的峰值压力测试,长时间运行的稳定性测试等. 前提: 测试准备:版本是纯净版本,不应该附加多余的log和调试用组件. ...

  2. 使用jquery结合ajax做下拉刷新页面,上拉加载页面,俗称分页

    jquery结合iscroll.js做下拉刷新页面,上拉加载页面 先上代码,里面都有注释这就不一一说明了 <!DOCTYPE html> <html lang="en&qu ...

  3. HDFS写机制

    HDFS写机制: 1.client客户端调用分布式文件系统对象DistributedFileSystem对象的create方法,创建一个文件输出流FSDataOutputStream对象. 2.Dis ...

  4. YAML_14 tags给指定的任务定义一个调用标识,以后不用重复整个过程,只需要执行tags标签的部分

    ansible]# vim adhttp.yml --- - hosts: cache   remote_user: root   tasks:     - copy:         src: /r ...

  5. jsp+ tinymce粘贴word

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  6. phpize是干嘛的

    安装php(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize一.phpize是干嘛的?phpize是什么东西呢?php官方的说明: ...

  7. tar归档压缩命令和zip归档 和7zip压缩命令;库文件归档ar命令

    第一.tar 归档 tar -c 创建归档文件包 tar -x 释放归档文件包 tar -t 查看归档文件包 tar -v 显示归档包操作过程信息 tar -f 指定归档文件名 案例1:归档 /hom ...

  8. 叉积_判断点与三角形的位置关系 P1355 神秘大三角

    题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样例) 所有 ...

  9. AtCoder Grand Contest 019 题解

    传送门 \(A\) 咕咕 int a,b,c,d,n,t; int main(){ scanf("%d%d%d%d%d",&a,&b,&c,&d,& ...

  10. Struts2.5入门之环境设置

    1. 下载Struts2.5,下载地址 2. 新建项目struts2 3. 解压后将struts\lib下的所有jar包复制到WEB-INF/lib文件夹下 4. 修改web.xml配置文件,添加如下 ...