Java8的时间日期API
原先的时间 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的更多相关文章
- java8新特性——时间日期API
		传统的时间 API 存在线程安全的问题,在多线程开发中必须要上锁,所以 java8 现在为我们提供了一套全新的时间日期 API ,今天进来学习一下java8 的时间日期 API. 一.使用 Local ... 
- Java8新特性(三)——Optional类、接口方法与新时间日期API
		一.Optional容器类 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. 查看结构图可以看到有如下常用方法: of(T)—— ... 
- JAVA8学习——新的时间日期API&Java8总结
		JAVA8-时间日期API java8之前用过的时间日期类. Date Calendar SimpleDateFormat 有很多致命的问题. 1.没有时区概念 2.计算麻烦,实现困难 3.类是可变的 ... 
- Java 8 的时间日期 API
		上一篇文章『Java 的时间日期 API』中,我们学习了由 Date.Calendar,DateFormat 等组成的「传统时间日期 API」,但是传统的处理接口设计并不是很友好,不易使用.终于,Ja ... 
- Java8中时间日期库的20个常用使用示例
		除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期, ... 
- Java 8 新的时间日期 API
		1. 概述 1.1 简介 Java 8 引入了一套全新的时间日期API,操作起来更简便.简单介绍下,LocalDate和LocalTime和LocalDateTime的使用: java.util.Da ... 
- Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题【转】
		Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题 http://blog.didispace.com/Spring-Boot-And-Feign- ... 
- JAVASE(十二) Java常用类: 包装类、String类、StringBuffer类、时间日期API、其他类
		个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.包装类 1 .1 八个包装类  1. 2 基本数据类型,包装类,String者之间的转换  2. ... 
- Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题
		LocalDate.LocalTime.LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Boot或使 ... 
随机推荐
- rocketmq那些事儿之入门基础
			分布式消息队列中间件作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性,其复杂性可见一斑,作为核心组件,有必要去深入了解学习 前言 分布式消息队列中间件主要具有以下优势: 削峰 ... 
- 《代码敲不队》第九次团队作业:Beta冲刺第2天
			项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 (1)项目文档的完善与整理:(2)团队项目总结陈述PPT编制:(3)符合 ... 
- keras模块学习之泛型模型学习笔记
			本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! Keras泛型模型接口是: 用户定义多输出模型.非循环有向模型或具有共享层的模型等复杂模型的途径 适用于实现:全连接网络和多输入 ... 
- 十六.maven自动化构建protobuf代码依赖
			protobuf在序列化和反序列化中的优势: 1):序列化后体积相比Json和XML很小,适合网络传输2):支持跨平台多语言3):消息格式升级和兼容性还不错4):序列化反序列化速度很快,快于Json的 ... 
- 在PHP中使用CURL实现GET和POST请求的方法
			1.CURL介绍 CURL是一个利用URL语法规定来传输文件和数据的工具.支持很多协议,如HTTP.FTP.TELNET等. 幸运的是PHP也支持CURL库.本文将介绍curl的一些高级特性,以及在P ... 
- 《Flask Web开发实战:入门、进阶与原理解析》 学习笔记
			一个视图函数可以绑定多个 URL 为了让互联网上的人都可以访问,需要安装程序的服务器有公网ip 如果过度使用扩展,在不需要 的地方引人,那么相应也会导致代码不容易维护 ,应该尽量从实际需求出发,只在需 ... 
- C# 3.0 扩展方法&接口
			namespace ExtensionInterfaceMethod { class Program { static void Main(string[] args) { //使用接口变量来调用扩展 ... 
- RookeyFrame 线下 添加Model
			1.在Model层添加一个类,继承BaseEntity,如: (将就demo里面的类改了一下) using Rookey.BusSys.Model.Base; using Rookey.BusSys. ... 
- Linux中三种SCSI target的介绍之SCST
			版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ... 
- 28、对多次使用的RDD进行持久化或Checkpoint
			一.图解 二.说明 如果程序中,对某一个RDD,基于它进行了多次transformation或者action操作.那么就非常有必要对其进行持久化操作,以避免对一个RDD反复进行计算. 此外,如果要保证 ... 
