JDK8新的时间类LocalDateTime,LocalTime,LocalDate使用笔记
JAVA8出的新的时间日期API都是线程安全的,并且性能更好,代码更简洁!
LocalDate、LocalTime、LocalDateTime是新API里的基础对象,绝大多数操作都是围绕这几个对象来进行的,有必要搞清楚:
LocalDate : 只含年月日的日期对象
LocalTime :只含时分秒的时间对象
LocalDateTime : 同时含有年月日时分秒的日期对象
获取当前时间
LocalTime localTime = LocalTime.now();LocalDate localDate = LocalDate.now();LocalDateTime localDateTime = LocalDateTime.now();System.out.println("当前时间:" + localTime);System.out.println("当前日期:" + localDate);System.out.println("当前时间日期:" + localDateTime);
运行结果:
格式化日期
//格式化日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String now = localDateTime.format(formatter);
System.out.println("格式化后当前时间日期:" + now);
运行结果:
解析时间
//解析时间
LocalDateTime localDateTime = LocalDateTime.parse("2020-08-08 08:08:08", formatter);
System.out.println("解析后时间:" + localDateTime);
运行结果:
除了基本的格式化,解析时间之外,LocalDateTime还提供了对时间的加减操作
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前时间日期:" + localDateTime.format(formatter));
//增加一个月时间
localDateTime = localDateTime.plusMonths(1);
System.out.println("增加一个月时间后时间:" + localDateTime.format(formatter));
//增加2周时间
localDateTime = localDateTime.plusWeeks(2);
System.out.println("增加2周时间后时间:" + localDateTime.format(formatter));
//减少两天时间
localDateTime = localDateTime.plusDays(-2);
System.out.println("减少2天时间后时间:" + localDateTime.format(formatter));
运行结果:
除了使用plusMonths等方法外,还可以使用plus(long amountToAdd, TemporalUnit unit)方法
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();System.out.println("当前时间日期:" + localDateTime.format(formatter));//增加一个月时间localDateTime = localDateTime.plus(1, ChronoUnit.MONTHS);System.out.println("增加一个月时间后时间:" + localDateTime.format(formatter));//增加2周时间localDateTime = localDateTime.plus(2, ChronoUnit.WEEKS);System.out.println("增加2周时间后时间:" + localDateTime.format(formatter));//减少两天时间localDateTime = localDateTime.plus(-2, ChronoUnit.DAYS);System.out.println("减少2天时间后时间:" + localDateTime.format(formatter));
运行结果:
JAVA8还提供了计算时间间隔,日期间隔的类
Duration:用于计算两个“时间”间隔
Period:用于计算两个“日期”间隔
LocalTime localTime1 = LocalTime.now();LocalTime localTime2 = LocalTime.of(18, 36, 33);System.out.println("时间1:" + localTime1);System.out.println("时间2:" + localTime2);Duration duration = Duration.between(localTime1, localTime2);System.out.println("两个时间之间相隔" + duration.toHours() + "小时");System.out.println("两个时间之间相隔" + duration.toMinutes() + "分钟");System.out.println("两个时间之间相隔" + duration.getSeconds() + "秒");
运行结果:
LocalDate localDate1 = LocalDate.of(2021, 2, 20);LocalDate localDate2 = LocalDate.of(2022, 5, 12);Period period = Period.between(localDate1, localDate2);System.out.println("日期1:" + localDate1);System.out.println("日期2:" + localDate2);System.out.println("两个日期之间相隔" + period.getYears() + "年" + period.getMonths() + "月" + period.getDays() + "日");
运行结果:
另外还提供了是否是闰年的方法
System.out.println("是否为闰年:" + localDate2.isLeapYear());
运行结果:
withDayOfYear(int dayOfYear)可以将日期设置为今年的多少天
LocalDateTime localDateTime3 = LocalDateTime.now();
System.out.println("当前时间日期:" + localDateTime3.format(formatter));
//将当前日期设置为今年的第50天
localDateTime3 = localDateTime3.withDayOfYear(50);
System.out.println("设置后日期:" + localDateTime3.format(formatter));
运行结果:
JDK8新的时间类LocalDateTime,LocalTime,LocalDate使用笔记相关推荐
- java8新日期时间类使用
java8之后提供了新的日期和时间相关类,接口和枚举,放在了java.time包下(之前旧的日期时间类放在java.util包),使设置日期时间更加方便.java8的新日期时间类的设计,借鉴了joda ...
- JDK8新特性-Optional类
个人简介 作者是一个来自河源的大三在校生,以下笔记都是作者自学之路的一些浅薄经验,如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门. 文章目录 个人简介 JDK8新特性-Option ...
- 快速了解JDK8中的新日期时间类
积土成山,风雨兴焉:积水成渊,蛟龙生焉:积善成德,而神明自得,圣心备焉.故不积跬步,无以至千里,不积小流无以成江海.齐骥一跃,不能十步,驽马十驾,功不在舍.面对悬崖峭壁,一百年也看不出一条裂缝来,但用 ...
- 构造一个日期类java_Java8 新日期时间类(1)
Java.time 包的优势 使用Java8,新的日期时间API引入覆盖旧的日期时间API的以下缺点. 非线程安全 - java.util.Date不是线程安全的,因此开发者必须在使用日期处理并发性问 ...
- JDK8的日期时间类1
localDateTime类 1.分类 将时间分成 localDate类[年月日]] localTime类[时分秒] localDateTime类[年月日时分秒] 2.localDateTime类[常 ...
- JDK8的日期时间类2
1.localDateTime类格式化和解析 概念 (1)格式化:把localDateTime对象转换为String,需通过DateTimeFormatter对象指定格式 (2)解析:把String转 ...
- JDK8的日期时间类3
计算两个时间的间隔 方法:between[静态方法] 1.获取相隔的年月日用Period调用,参数用LocalDate类对象封装的时间 2.获取相隔的天年月日用Duration调用,参数用LocalD ...
- JDK8新特性 - Optional类
引言 Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException).本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空 ...
- Java JDK8新特性Optional类
Optional类 1.该类java.util包下,是不能被继承的泛型类即:public final class Optional<T>. 2.该类有两个私有属性: T value和 静态 ...
最新文章
- MPB:华中师大谢波组-​​​微生物非标记定量蛋白质组学样品制备方法
- IP地址分类及子网掩码详解
- 第二章 DateTime工具类
- 蓝桥杯 日志统计 尺取
- 【Python练习题】程序5
- Java并发-ThreadLocal
- QT5_chart_常见几种图形
- 【MySQL】MySQL 执行 PROCEDURE ANALYSE 报错 ERROR 1064 (42000)
- LeetCode第12题 整数转罗马数字
- java架构-Spring MVC 与 Servlet
- python 移除列表中的值 list index out of range_重拾Python(二)之列表
- 动态路由之OSPF(开放式最短路径优先协议)
- 怎么在css中定义字体颜色,css中怎么设置字体颜色
- Oracle中文转拼音函数
- [python爬虫]爬取英雄联盟所有英雄数据并下载所有英雄皮肤
- Python练手项目:计算机自动还原魔方(5)最后一步
- 看清接收网络数据包的全过程
- 图片情感分析(1):图像数据预处理
- 【AI绘画打卡】| 用漫画生成器绘制宅男最爱的二次元美女
- linux执行ps命令卡住了,linux ps命令的状态说明