Java 8 时间日期使用
一、日期时间
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 时间日期使用的更多相关文章
- JAVA格式化时间日期
		
JAVA格式化时间日期 import java.util.Date; import java.text.DateFormat; /** * 格式化时间类 * DateFormat.FULL = 0 * ...
 - Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题【转】
		
Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题 http://blog.didispace.com/Spring-Boot-And-Feign- ...
 - java开源时间/日期库Joda-Time
		
任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.使用 JDK 完成这项任务将非常痛苦和繁琐.现在来看看 Joda Time,一 ...
 - Java中时间日期格式化
		
1.与日期时间相关的类: 第一:java.util.Date; 将时间作为一个整体使用.处理时,使用Date类较为简便 第二:j ...
 - Java 8 时间日期库的20个使用示例
		
java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...
 - Java 8 时间日期库的20个使用演示样例
		
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...
 - Java基础/时间日期格式
		
Java时间日期格式转换 一.Date转String和String转Date 参考博客:https://www.cnblogs.com/sharpest/p/7879377.html public s ...
 - Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题
		
LocalDate.LocalTime.LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Boot或使 ...
 - Java实现时间日期格式转换示例
		
package com.hanqi.util; import java.text.ParseException; import java.text.SimpleDateFormat; import j ...
 - Java 8 时间日期
		
啦啦啦 package lime.java1_8.time; import java.time.*; import java.time.format.DateTimeFormatter; import ...
 
随机推荐
- linux安装redis详细步骤(系统centos 6.4 )
			
1.安装redis 进入安装目录下载: cd /usr/local/redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz 解 ...
 - Leetcode之深度优先搜索(DFS)专题-547. 朋友圈(Friend Circles)
			
Leetcode之深度优先搜索(DFS)专题-547. 朋友圈(Friend Circles) 深度优先搜索的解题详细介绍,点击 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递 ...
 - 转载-lambda sort
			
原文:https://blog.csdn.net/qq_27127145/article/details/83930498 版权声明:本文为博主原创文章,转载请附上博文链接! import com.g ...
 - java实现截取PDF指定页并进行图片格式转换
			
1.引入依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox& ...
 - C++中的I/O输入输出问题
			
C++ I/O navigation: 1.文件输入输出 2.string流 1.输入输出 C++语言不直接处理输入输出,而是通过一些标准库中类型.从设备(文件,控制台,内存)中读取数据,向设备中写入 ...
 - Educational Codeforces Round 48 D Vasya And The Matrix
			
EDU #48 D 题意:给定一个矩阵,已知每一行和每一列上数字的异或和,问矩阵上的数字是多少,不存在则输出NO. 思路:构造题,可以考虑只填最后一行,和最后一列,其中(n,m)要特判一下.其他格子给 ...
 - Codeforces Round #483 (Div. 2)  B. Minesweeper
			
题目地址:http://codeforces.com/contest/984/problem/B 题目大意:扫雷游戏,给你一个n*m的地图,如果有炸弹,旁边的八个位置都会+1,问这幅图是不是正确的. ...
 - CH 4302  Interval GCD 题解
			
题意 给定一个长度为N的数列A,以及M条指令 (N≤5* 10^5, M<=10^5),每条指令可能是以下两种之一: "C l r d",表示把 A[l],A[l+1],-, ...
 - jQuery - 01. jQuery特点、如何使用jQuery、jQuery入口函数、jQuery和DOM对象的区别、jQuery选择器、
			
this指的是原生js的DOM对象 .css(“”):只写一个值是取值,写俩值是赋值 window.onload === $(document).ready(); $(“”):获取元素 标 ...
 - 【Nginx】(主从热备)LVS+Keepalived+Nginx实现高性能负载均衡集群
			
一.LVS 1.1 概述 1.2 Nginx与LVS区别什么 二.Keepalived 2.1 概述 2.2 keepalived和其工作原理 三.LVS+Keepalived+Nginx 搭建双机主 ...