Java 8 新的日期时间 API
时间:2019-11-21
本文章向大家介绍Java 8 新的日期时间 API,主要包括Java 8 新的日期时间 API使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、LocalDate 使用示例
LocalDate localDate = LocalDate.now();// 获取当前年月日 LocalDate localDate1 = LocalDate.of(2019, 9, 10);// 构造指定的年月日 System.out.println("localDate: " + localDate + " localDate1: " + localDate1); int year = localDate.getYear(); int year1 = localDate.get(ChronoField.YEAR); System.out.println("year: " + year + " year1: " + year1); Month month = localDate.getMonth(); int month1 = localDate.get(ChronoField.MONTH_OF_YEAR); System.out.println("month: " + month + " month1: " + month1); int day = localDate.getDayOfMonth(); int day1 = localDate.get(ChronoField.DAY_OF_MONTH); System.out.println("day: " + day + " day1: " + day1); DayOfWeek dayOfWeek = localDate.getDayOfWeek(); int dayOfWeek1 = localDate.get(ChronoField.DAY_OF_WEEK); System.out.println("dayOfWeek: " + dayOfWeek + " dayOfWeek1: " + dayOfWeek1);
运行结果
localDate: 2019-11-21 localDate1: 2019-09-10 year: 2019 year1: 2019 month: NOVEMBER month1: 11 day: 21 day1: 21 dayOfWeek: THURSDAY dayOfWeek1: 4
2、LocalTime 使用示例
// 创建LocalTime LocalTime localTime = LocalTime.now(); LocalTime localTime1 = LocalTime.of(13, 51, 10); System.out.println("localTime: " + localTime + " localTime1: " + localTime1); // 获取小时 int hour = localTime.getHour(); int hour1 = localTime.get(ChronoField.HOUR_OF_DAY); System.out.println("hour: " + hour + " hour1: " + hour1); // 获取分 int minute = localTime.getMinute(); int minute1 = localTime.get(ChronoField.MINUTE_OF_HOUR); System.out.println("minute: " + minute + " minute1: " + minute1); // 获取秒 int second = localTime.getSecond(); int second1 = localTime.get(ChronoField.SECOND_OF_MINUTE); System.out.println("second: " + second + " second1: " + second1);
运行结果
localTime: 10:06:26.892 localTime1: 13:51:10 hour: 10 hour1: 10 minute: 6 minute1: 6 second: 26 second1: 26
3、LocalDateTime 使用示例
// 创建LocalDateTime LocalDate localDate = LocalDate.now(); System.out.println("localDate: " + localDate); LocalTime localTime = LocalTime.now(); System.out.println("localTime: " + localTime); LocalDateTime localDateTime = LocalDateTime.now(); System.out.println("localDateTime: " + localDateTime); LocalDateTime localDateTime1 = LocalDateTime.of(2019, Month.SEPTEMBER, 10, 14, 46, 56); System.out.println("localDateTime1: " + localDateTime1); LocalDateTime localDateTime2 = LocalDateTime.of(localDate, localTime); System.out.println("localDateTime2: " + localDateTime2); LocalDateTime localDateTime3 = localDate.atTime(localTime); System.out.println("localDateTime3: " + localDateTime3); LocalDateTime localDateTime4 = localTime.atDate(localDate); System.out.println("localDateTime4: " + localDateTime4); // 获取LocalDate LocalDate localDate2 = localDateTime.toLocalDate(); System.out.println("localDate2: " + localDate2); // 获取LocalTime LocalTime localTime2 = localDateTime.toLocalTime(); System.out.println("localTime2: " + localTime2);
运行结果
localDate: 2019-11-21 localTime: 10:07:14.198 localDateTime: 2019-11-21T10:07:14.198 localDateTime1: 2019-09-10T14:46:56 localDateTime2: 2019-11-21T10:07:14.198 localDateTime3: 2019-11-21T10:07:14.198 localDateTime4: 2019-11-21T10:07:14.198 localDate2: 2019-11-21 localTime2: 10:07:14.198
4、Instant 使用示例
// 创建Instant对象 Instant instant = Instant.now(); // 获取秒数 long currentSecond = instant.getEpochSecond(); System.out.println(currentSecond); // 获取毫秒数 long currentMilli = instant.toEpochMilli(); System.out.println(currentMilli);
运行结果
1574302070 1574302070013
5、 使用示例
LocalDateTime localDateTime = LocalDateTime.of(2019, Month.SEPTEMBER, 10, 14, 46, 56); System.out.println("localDateTime: " + localDateTime); // 增加一年 localDateTime = localDateTime.plusYears(1); System.out.println("localDateTime: " + localDateTime); localDateTime = localDateTime.plus(1, ChronoUnit.YEARS); System.out.println("localDateTime: " + localDateTime); // 减少一个月 localDateTime = localDateTime.minusMonths(1); System.out.println("localDateTime: " + localDateTime); localDateTime = localDateTime.minus(1, ChronoUnit.MONTHS); System.out.println("localDateTime: " + localDateTime); // 修改年为2019 localDateTime = localDateTime.withYear(2020); System.out.println("localDateTime: " + localDateTime); // 修改为2022 localDateTime = localDateTime.with(ChronoField.YEAR, 2022); System.out.println("localDateTime: " + localDateTime);
运行结果
localDateTime: 2019-09-10T14:46:56 localDateTime: 2020-09-10T14:46:56 localDateTime: 2021-09-10T14:46:56 localDateTime: 2021-08-10T14:46:56 localDateTime: 2021-07-10T14:46:56 localDateTime: 2020-07-10T14:46:56 localDateTime: 2022-07-10T14:46:56
6、结合spring-boot使用
// @JsonSerialize(using = DateConverter.class) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime;
转换类
package com.hao.util; import java.io.IOException; import java.time.LocalDateTime; import java.time.ZoneOffset; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; public class LocalDateTimeConverter extends JsonSerializer<LocalDateTime> { @Override public void serialize(LocalDateTime ldt, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeNumber(ldt.toInstant(ZoneOffset.of("+8")).toEpochMilli()); } }
总结:
1、DateTimeFormatter默认提供了多种格式化方式,如果默认提供的不能满足要求,可以通过DateTimeFormatter的ofPattern方法创建自定义格式化方式
2、和SimpleDateFormat相比,DateTimeFormatter是线程安全的
3、Date有的方法,LocalDateTime都有,而且更全面,更休息,推荐使用
原文地址:https://www.cnblogs.com/zhanh247/p/11903897.html
- WordPress免插件仅代码实现文章浏览次数的方法(2)
- 苹果被告了,但网友们却觉得一点也不亏!
- Castle 整合.NET Remoting
- 这三要素,让区块链技术成为颠覆世界的技术
- 代码实现 WordPress 反垃圾评论功能
- Flash/Flex学习笔记(39):弹性运动
- 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
- ASP.NET vNext 概述
- 丰富排版页面——为你的wordpress主题添加短代码形式美化框
- 开放式管理基础结构 OMI
- 人类设计了游戏和AI 2017年AI在游戏中打败了人类
- WordPress 代码实现相关文章(列表模式)功能
- 自动刷新页面
- Python语言被列入全国计算机等级考试科目中
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 刷题一个4ms的程序,代码如何优化到3ms再到2ms?
- 【LeetCode】1. 盛最多水的容器:C#三种解法
- .NET core3.1使用cookie进行身份认证
- User-Agent那些事
- 三分钟Docker-推送本地镜像到仓库
- 初识ABP vNext(6):vue+ABP实现国际化
- MySQL 案例:Delete 删数据后磁盘空间未释放
- 初识ABP vNext(7):vue身份认证管理&租户管理
- 常用算法复杂度速查表,蹲坑的功夫都能背
- 一键同步cos中的内容
- 博客由Hexo转向Hugo
- 屏蔽掉向日葵的有效方法
- 帝国cms在防止内容采集方面做的工作
- 记录一次有意思的溯源
- 个人博客图片的解决方案