JDK8日期时间操作小汇总
统一使用java.time.*包下的类
1、获取当前的日期、时间、日期加时间
LocalDate todayDate = LocalDate.now(); //今天的日期 LocalTime now = LocalTime.now(); //此刻的时间--精确到毫秒 LocalDateTime now = LocalDateTime.now(); //此刻时间--年-月-日-时-分-秒-毫秒
2、获取单独年日月时分秒
LocalDateTime now = LocalDateTime.now();
System.out.println("年:"+now.getYear());
System.out.println("月:"+now.getMonthValue());
System.out.println("日:"+now.getDayOfMonth());
System.out.println("时:"+now.getHour());
System.out.println("分:"+now.getMinute());
System.out.println("秒:"+now.getSecond());
System.out.println("该日期是该年的第"+now.getDayOfYear()+"天");
3、将特定的时间转成LocalDate、LocalTime、LocalDateTime 都有很多的重载的方法
LocalDate of1 = LocalDate.of(2019, 1, 16);
System.out.println(of1);
LocalTime of2 = LocalTime.of(9, 25, 36);
System.out.println(of2);
LocalDateTime of3 = LocalDateTime.of(of1, of2);
System.out.println(of3);
LocalDateTime of4 = LocalDateTime.of(2019, 1, 14, 9, 26, 25);
System.out.println(of4);
4、判断时间是否相等(日期、时间、日期加时间)时间的比较精确到纳秒,可以先将时间进行格式化,然后比较,可以控制精度问题
// 日期
LocalDate date1 = LocalDate.of(2019, 1, 17);
LocalDate date2 = LocalDate.now();
if (date1.equals(date2)) {
System.out.println("日期相等");
} else {
System.out.println("日期不相等");
}
// 时间
LocalTime date1 = LocalTime.of(9, 46);
LocalTime date2 = LocalTime.now();
if (date1.equals(date2)) {
System.out.println("时间相等");
} else {
System.out.println("时间不相等");
}
// 时间加日期
LocalDateTime date1 = LocalDateTime.of(2019,1,17,9,47);
LocalTime date2 = LocalTime.now();
if (date1.equals(date2)) {
System.out.println("时间加日期相等");
} else {
System.out.println("时间加日期不相等");
}
5、检查周几这种周期性的事件
DayOfWeek of = DayOfWeek.THURSDAY;
DayOfWeek from = DayOfWeek.from(LocalDate.now());
if (from.equals(of)) {
System.out.println("今天是周四");
} else {
System.out.println("今天不是周四");
}
DayOfWeek from1 = DayOfWeek.from(LocalDate.of(2019, 1, 10));
if (from1.equals(of)) {
System.out.println("该日期是周四");
} else {
System.out.println("该日期不是周四");
}
6、指定时间之后或之前XXX的时间
LocalDateTime now = LocalDateTime.now();
System.out.println("当前时间"+now);
System.out.println("当前时间之前2天:"+now.minusDays(2));
System.out.println("当前时间之后2天:"+now.plusDays(2));
System.out.println("当前时间之前2周:"+now.minusWeeks(2));
System.out.println("当前时间之后2周:"+now.plusWeeks(2));
System.out.println("当前时间之前2月:"+now.minusMonths(2));
System.out.println("当前时间之后2月:"+now.plusMonths(2));
System.out.println("当前时间之前2年:"+now.minusYears(2));
System.out.println("当前时间之后2年:"+now.plusYears(2));
System.out.println("当前时间之前2小时:"+now.minusHours(2));
System.out.println("当前时间之后2小时:"+now.plusHours(2));
System.out.println("当前时间之前2分钟:"+now.minusMinutes(2));
System.out.println("当前时间之后2分钟:"+now.plusMinutes(2));
System.out.println("当前时间之前2秒:"+now.minusSeconds(2));
System.out.println("当前时间之后2秒:"+now.plusSeconds(2));
7、比较时间的先后
LocalDateTime now = LocalDateTime.now();
System.out.println("当前时间:"+now);
LocalDateTime appointTime = LocalDateTime.of(2019, 1, 17, 9, 32, 12);
System.out.println("指定时间:"+appointTime);
System.out.println(now.isAfter(appointTime));
System.out.println(now.isBefore(appointTime));
8、格式化时间格式及按照一定格式解析
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH:mm:ss");
//格式化
String format = now.format(formatter);
String format2 = now.format(formatter2);
String format3 = now.format(formatter3);
System.out.println("格式化1:" + format);
System.out.println("格式化2:" + format2);
System.out.println("格式化3:" + format3);
//解析
LocalDateTime localDateTime = LocalDateTime.parse(format, formatter);
LocalDate localDate = LocalDate.parse(format2, formatter2);
LocalTime localTime = LocalTime.parse(format3, formatter3);
System.out.println("解析1:" + localDateTime);
System.out.println("解析2:" + localDate);
System.out.println("解析3:" + localTime);
9、根据指定的毫秒数获取LocalDateTime对象
Long nowMilli = new Date().getTime();
LocalDateTime localDateTime = Instant.ofEpochMilli(nowMilli).atZone(ZoneId.of("+8")).toLocalDateTime();
System.out.println(localDateTime);
注:+8 表示东八区,即常说的北京时间
10、通过LocalDateTime对象获取毫秒数
LocalDateTime now = LocalDateTime.now();
long l = now.atZone(ZoneId.of("+8")).toInstant().toEpochMilli();
System.out.println(l);
注:+8 表示东八区,即常说的北京时间
11、通过LocalDateTime对象获取秒数
LocalDateTime now = LocalDateTime.now();
long second = now.toEpochSecond(ZoneOffset.of("+8"));
System.out.println(second);
注:+8 表示东八区,即常说的北京时间
12、判断指定日期是否是闰年(只LocalDate)
LocalDate now = LocalDate.now();
if (now.isLeapYear()) {
System.out.println("now是闰年");
} else {
System.out.println("now不是闰年");
}
13、使用默认格式解析时间(LocalDateTime对象可解析的格式yyyy-MM-ddTHH:mm:ss)--不是空格了,是T
LocalDateTime dateTime = LocalDateTime.parse("2019-01-14T12:04:12");
int monthValue = dateTime.getMonthValue();
int minute = dateTime.getMinute();
System.out.println(monthValue+":"+minute);
LocalTime time = LocalTime.parse("19:14:25");
int hour = time.getHour();
System.out.println(hour);
LocalDate date = LocalDate.parse("2019-01-12");
int year = date.getYear();
System.out.println(year);
14、总结
jdk8中提供三个类(LocalDate,LocalTime,LocalDateTime),它们分别对年月日、时分秒和年月日时分秒进行单独的处理,使用时可以根据自己的实际情况进行选择,它们的API类似。
Date与LocalDateTime、LocalDate、LocalTime互转参考: https://www.cnblogs.com/exmyth/p/6425878.html
JDK8日期时间操作小汇总的更多相关文章
- paip.日期时间操作以及时间戳uapi php java python 总结
paip.日期时间操作以及时间戳uapi php java python 总结 ///uapi Date 函数 | Day 函数 | Hour 函数 | Minute 函数 | Month 函数 | ...
- Firebird日期时间操作
最近在使用Firebird数据做 一项目,使用FireBird边用边学.(以下转贴) 查询2007年度以后的,12月份以上的数据记录,datetime为timestamp字段 select * fro ...
- Python实用日期时间处理方法汇总
这篇文章主要介绍了Python实用日期时间处理方法汇总,本文讲解了获取当前datetime.获取当天date.获取明天/前N天.获取当天开始和结束时间(00:00:00 23:59:59).获取两个d ...
- Python基础 | 日期时间操作
目录 获取时间 时间映射 格式转换 字符串转日期 日期转字符串 unixtime 时间计算 时间偏移 时间差 "日期时间数据"作为三大基础数据类型之一,在数据分析中会经常遇到. 本 ...
- Java日期时间操作基础——包含JDK1.8时间操作新特性
JDK1.7日期时间操作 示例小结 public class DateTest { public static final String FORMAT_DATE = "yyyy-MM-dd& ...
- Mysql——日期函数,时间操作(汇总)
英文文档连接:https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html 中文文档连接:https://www.docs4 ...
- MySQL tips (日期时间操作/concat 等)
1. Query结尾要加一个分号: 2. 数据库和表 SHOW DATABASES; USE YOUR_DB; SHOW TABLES; SHOW COLUMNS FROM study或者D ...
- mysql日期时间操作
select curdate(); --获取当前日期 select last_day(curdate()); --获取当月最后一天. select DATE_ADD(curdate(),interva ...
- php 学习笔记之日期时间操作一箩筐
格式化日期时间 date : 格式化日期时间 场景 将当前日期时间或者特定日期时间格式化输出为特定格式的字符串,常用于人性化展示信息. 说明 返回给定时间戳格式化后所产生的日期时间字符串,如果没有给出 ...
随机推荐
- java关于lombok(包括父类参数)
java关于lombok对bean对象进行自动设置 使用说明 使用方式 注释类型 @NonNull @Data(常用) @NoArgsConstructor(常用)/@RequiredArgsCons ...
- 使用 JDK11 遇到的问题
1.下载的 JDK 解压版中没有 jre 目录以及相应的包,需要通过命令自动生成 进入 JDK 的 bin 目录下,执行以下命令,然后会在 bin 目录下生成一个 jre 目录,需要将该 jre 目录 ...
- 打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口。 语法: window.open([URL], [窗口名称], [参数字符串])
打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL: ...
- 【左偏树】[APIO2012]派遣
题意可真的是有毒 第一眼树形背包可做?(反正我没用树形背包打过,边上巨佬打的背包似乎没拿分) 后来发现可以贪心搞,我们先把一个节点所有的儿子都取进去,之后不行的话再从大的开始拿走就好了 问题就变成了了 ...
- signed main()
主函数由int main()改成signed main() 好处:把int改成long long 的时候不用单独把它改成int了,懂的人都懂(滑稽
- 廖雪峰Java11多线程编程-2线程同步-3死锁
1.线程锁可以嵌套 在多线程编程中,要执行synchronized块: 必须首先获得指定对象的锁 Java的线程锁是可重入的锁.对同一个对象,同一个线程,可以多次获取他的锁,即同一把锁可以嵌套.如以下 ...
- 线段树动态开点——cf1045G
只计算半径小的能看到的半径大的,因为如果计算半径大的看到半径小的,虽然q在其范围内,但是小的不一定能看到大的 那么我们将机器人按照半径降序排序 遍历一次,去查询在[x-r,x+r]范围的,智商在[q- ...
- SQL中的long text
SQL中的long text 问题: 解决方法: SELECT CONVERT(VARCHAR(5000),参考文献) AS 参考文献 FROM tpi20160503 出现原因:
- sql不用拼接语句实现动态查询条件
DECLARE @oFrom INT SELECT * FROM baseinfo AND ( ( and Type = 'Breakfast') ) or的条件可自由添加,尤其适用互斥条件的查询.
- jeecms v9 vue-CLI开发环境配置
vue-CLI开发环境配置 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用.该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程.只需几分钟即可创建并启动一个带热重载.保存时静 ...