Java 8的Time包常用API
2024-08-27 11:39:16
Date、Canlender、SimpleDateFormat类在新的Time包面前几乎没有优势
日期LocalDate,时间LocalTime,日期时间LocalDateTime。
时区ZoneId,时间点Instant,时间单位ChronoUnit,格式化DateTimeFormatter
LocalDate
当前日期
LocalDate localDate = LocalDate.now();
指定日期
// (方式1)
LocalDate localDate1 = LocalDate.of(2017, 07, 20);
// (方式2)
LocalDate localDate2 = LocalDate.parse("2017-07-25");
日期加/减 多少个时间单位
// 加1个月(方式1)
LocalDate localDate = localDate.plus(1, ChronoUnit.MONTHS);
// 加1天(方式2)
LocalDate localDate = localDate.plusDays(1);
解析日期
int dayOfMonth = localDate.getDayOfMonth();
是否闰年
boolean b = localDate.isLeapYear();
是否是一个日期之前/之后
boolean b = localDate1.isBefore(localDate2);
boolean b = localDate1.isAfter(localDate2);
两个日期相差多少个时间单位
// 相差多少天
long diff = ChronoUnit.DAYS.between(localDate1, localDate2);
// 相差多少秒
long diff = ChronoUnit.SECONDS.between(localDate1, localDate2);
格式化
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String s = dateTimeFormatter.format(localDate);
两个日期是否相等
boolean b = localDate1.equals(localDate2);
LocalTime
大部分的API与LocalDate同理,区别之处在于
1、无法判断是否闰年
2、LocalDate对象toString()返回的是“2017-11-09”,LocalTime对象toString()返回的是“11:16:50.144”(如果毫秒数为0,则最后一段数字不显示),如果想要返回HH:mm:ss格式,需要格式化。
LocalDateTime
大部分的API与LocalDate同理,区别之处在于
1、无法直接判断是否闰年,需要先转化为LocalDate
boolean b = localDateTime.toLocalDate().isLeapYear();
2、LocalDateTime对象toString()返回的是“2017-11-09T11:16:50.144”,如果想要返回HH:mm:ss格式,需要格式化。
处理遗留代码中的java.util.Date对象
先将Date转化为Instant对象,然后根据需要用LocalDate、LocalTime、LocalDateTime各自的from工厂方法生成对象
// 遗留代码
Date birthday = user.getBirthday();
Date orderTime = order.getOrderTime();
// 转换
LocalDate birthdayEx = LocalDate.from(birthday.toInstant());
LocalDateTime orderTimeEx = LocalDateTime.from(orderTime.toInstant());
处理遗留代码中的java.util.Calendar对象
与java.util.Date对象的转化同理,Calendar对象也有toInstant方法。
最新文章
- java异常处理(父子异常的处理)
- ASM:《X86汇编语言-从实模式到保护模式》第9章:实模式下中断机制和实时时钟
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式及apr配置
- 深入理解 Win32 PE 文件格式
- Redis集群的部署
- 读书笔记——OpenGL超级宝典
- GATK原理及流程
- Eclipse插件推荐:UCDetector: Unnecessary Code Detector
- Objective-C 【self的用法】
- 利用set实现去重
- NMAP扫描UDP123NTP端口详解
- Unix/Linux环境C编程入门教程(10) SUSE Linux EnterpriseCCPP开发环境搭建
- Node.js和PHP运行机制对比
- UIApplicationMain方法介绍
- JMeter+ant+jenkins自动化持续集成
- Java Concurrent Topics
- BFC块级格式上下文
- jdk1.7中的常量池
- BZOJ_1014_[JSOI2008]火星人prefix_splay+hash
- SpringCloud系列——Bus 消息总线