spring boot 最佳实践(三)--使用java.time
来源:互联网 发布:淘宝上刘老中医可靠吗 编辑:程序博客网 时间:2024/05/29 11:03
java.time由5个包组成参考:
- java.time – 包含值对象的基础包
- java.time.chrono – 提供对不同的日历系统的访问
- java.time.format – 格式化和解析时间和日期
- java.time.temporal – 包括底层框架和扩展特性
- java.time.zone – 包含时区支持的类
基本API
日期 LocalDate
LocalDate是其中最重要的类之一。它是表示日期的不可变类型,不包含时间和时区。
LocalDate date = LocalDate.of(2014, Month.JUNE, 10);int year = date.getYear(); // 2014年Month month = date.getMonth(); // 6月int dom = date.getDayOfMonth(); // 10DayOfWeek dow = date.getDayOfWeek(); // 星期二int len = date.lengthOfMonth(); // 30 (6月份的天数)boolean leap = date.isLeapYear(); // false (不是闰年)
由于LocalDate是不可变类型,每次操作都会产生一个新的实例,而原有实例不收任何影响。
LocalDate date = LocalDate.of(2014, Month.JUNE, 10);date = date.withYear(2015); // 2015-06-10date = date.plusMonths(2); // 2015-08-10date = date.minusDays(1); // 2015-08-09
时间 LocalTime
LocalTime是值类型,且跟日期和时区没有关联。当我们对时间进行加减操作时,以午夜基准,24小时一个周期。因此,20:00加上6小时,结果就是02:00。
LocalTime time = LocalTime.of(20, 30);int hour = date.getHour(); // 20int minute = date.getMinute(); // 30time = time.withSecond(6); // 20:30:06time = time.plusMinutes(3); // 20:33:06
时间和日期组合LocalDateTime
LocalDateTime是LocalDate和LocalTime的简单组合。它表示一个跟时区无关的日期和时间。LocalDateTime可以直接创建,或者组合时间和日期:
LocalDateTime dt1 = LocalDateTime.of(2014, Month.JUNE, 10, 20, 30);LocalDateTime dt2 = LocalDateTime.of(date, time);LocalDateTime dt3 = date.atTime(20, 30);LocalDateTime dt4 = date.atTime(time);
LocalDateTime的其他方法跟LocalDate和LocalTime相似。下面总结了用到的方法前缀:
时间点Instant
Instant表示自1970年1月1日0时0分0秒(UTC)开始的秒数。用于机器可读的时间存储。Instant的精度可以达到纳秒级。
Instant start = Instant.now();// perform some calculationInstant end = Instant.now();assert end.isAfter(start);
时间修改器TemporalAdjuster
时间修改器TemporalAdjuster类提供一个预装包的、能操纵日期的功能,比如根据月份的最后一天获取日期的对象。
//import static java.time.DayOfWeek.*//import static java.time.temporal.TemporalAdjusters.*LocalDate date = LocalDate.of(2014, Month.JUNE, 10);date = date.with(lastDayOfMonth());date = date.with(nextOrSame(WEDNESDAY));
时间长度Duration
Duration表示以秒和纳秒为基准的时长。例如,“23.6秒”。Period表示以年、月、日衡量的时长。例如,“3年2个月零6天”。它们可以作为参数,传给主要的时间/日期类的增加或减少时间的方法:
Period sixMonths = Period.ofMonths(6);LocalDate date = LocalDate.now();LocalDate future = date.plus(sixMonths);
解析和格式化DateTimeFormatter
DateTimeFormatter是最通用的创建格式化器的方式。包括:
- 常用ISO格式常量,如ISO_LOCAL_DATE
- 字母模式,如ofPattern(“dd/MM/uuuu”)
- 本地化样式,如ofLocalizedDate(FormatStyle.MEDIUM)
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/uuuu");LocalDate date = LocalDate.parse("24/06/2014", f);String str = date.format(f);
时间比较
//时间大小dayOne.isBefore(dayTwo);//时间差long between = ChronoUnit.MONTHS.between(dayOne, dayTwo);
新旧版本兼容参考:
//java.util.Date转LocalDate;Date input = new Date();LocalDate date = input.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
更多资料
官方文档:http://docs.oracle.com/javase/tutorial/datetime/TOC.html
- spring boot 最佳实践(三)--使用java.time
- spring boot 最佳实践(一)--使用jackson
- spring boot 最佳实践(二)--使用Bean Validation
- spring boot 最佳实践(五)--SpEL
- RocketMQ最佳实践(三)开发spring-boot-starter-rocketmq实现与spring boot项目的整合
- spring boot 最佳实践(四)--Spring MVC
- spring boot 最佳实践(六)--Spring Cache
- spring boot 最佳实践(七)-- spring-retry
- Spring Boot 实践折腾记(三):三板斧,Spring Boot下使用Mybatis
- spring boot 最佳实践(九)-- 数据访问权限
- spring boot 最佳实践(八)-- 请求上下文注入
- Spring-boot初使用(三)
- Spring boot(三)
- Spring 最佳实践 - Spring提供的远程访问(三)
- 如何使用Spring Boot从0到1搭建一个Java后台(三)
- Spring-boot中使用nutz实践
- 【C#编程最佳实践 三】接口使用实践
- 使用 Java Native Interface 的最佳实践(JNI)
- 6.2.2_图像绘制器
- Redis学习手册
- Linux上部署Jenkins流程
- 项目经验分享
- 小白Python学习第一弹
- spring boot 最佳实践(三)--使用java.time
- 线段树,实例,代码实现,区间最值,区间求和,顺序存储,链式存储
- iOS截屏包含状态栏
- Dom04-Dom对元素的增删改插
- Axure中图片不能显示出来
- RedHat 10版本更换yum源--用CentOS源来代替(2017.05.27)
- Hbuilder打包app流程
- JavaScript中常用的正则表达式
- Java中将一个对象赋给另一个对象时会发生什么?