基于Java8的日期时间工具类DateTimeFormatter
原文:https://blog.csdn.net/qq_36596145/article/details/85331002
- import java.time.Instant;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.LocalTime;
- import java.time.ZoneId;
- import java.time.ZonedDateTime;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.ChronoField;
- import java.util.Date;
- /**
- * 基于Java8的时间工具类
- *
- * @author keji
- * @version $Id: DateUtil.java, v 0.1 2018-12-28 14:11 keji Exp $
- */
- public class DateUtil {
- /**
- * 例如:2018-12-28
- */
- public static final String DATE = "yyyy-MM-dd";
- /**
- * 例如:2018-12-28 10:00:00
- */
- public static final String DATE_TIME = "yyyy-MM-dd HH:mm:ss";
- /**
- * 例如:10:00:00
- */
- public static final String TIME = "HHmmss";
- /**
- * 例如:10:00
- */
- public static final String TIME_WITHOUT_SECOND = "HH:mm";
- /**
- * 例如:2018-12-28 10:00
- */
- public static final String DATE_TIME_WITHOUT_SECONDS = "yyyy-MM-dd HH:mm";
- /**
- * 获取年
- *
- * @return 年
- */
- public static int getYear() {
- LocalTime localTime = LocalTime.now();
- return localTime.get(ChronoField.YEAR);
- }
- /**
- * 获取月份
- *
- * @return 月份
- */
- public static int getMonth() {
- LocalTime localTime = LocalTime.now();
- return localTime.get(ChronoField.MONTH_OF_YEAR);
- }
- /**
- * 获取某月的第几天
- *
- * @return 几号
- */
- public static int getMonthOfDay() {
- LocalTime localTime = LocalTime.now();
- return localTime.get(ChronoField.DAY_OF_MONTH);
- }
- /**
- * 格式化日期为字符串
- *
- * @param date date
- * @param pattern 格式
- * @return 日期字符串
- */
- public static String format(Date date,String pattern){
- Instant instant = date.toInstant();
- LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
- return localDateTime.format(DateTimeFormatter.ofPattern(pattern));
- }
- /**
- * 解析字符串日期为Date
- *
- * @param dateStr 日期字符串
- * @param pattern 格式
- * @return Date
- */
- public static Date parse(String dateStr, String pattern) {
- LocalDateTime localDateTime = LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
- Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
- return Date.from(instant);
- }
- /**
- * 为Date增加分钟,减传负数
- *
- * @param date 日期
- * @param plusMinutes 要增加的分钟数
- * @return 新的日期
- */
- public static Date addMinutes(Date date, Long plusMinutes) {
- LocalDateTime dateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
- LocalDateTime newDateTime = dateTime.plusMinutes(plusMinutes);
- return Date.from(newDateTime.atZone(ZoneId.systemDefault()).toInstant());
- }
- /**
- * 增加时间
- *
- * @param date date
- * @param hour 要增加的小时数
- * @return new date
- */
- public static Date addHour(Date date, Long hour) {
- LocalDateTime dateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
- LocalDateTime localDateTime = dateTime.plusHours(hour);
- return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
- }
- /**
- * @return 返回当天的起始时间
- */
- public static Date getStartTime() {
- LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0);
- return localDateTime2Date(now);
- }
- /**
- * @return 返回当天的结束时间
- */
- public static Date getEndTime() {
- LocalDateTime now = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999);
- return localDateTime2Date(now);
- }
- /**
- * 减月份
- *
- * @param monthsToSubtract 月份
- * @return Date
- */
- public static Date minusMonths(long monthsToSubtract){
- LocalDate localDate = LocalDate.now().minusMonths(monthsToSubtract);
- return localDate2Date(localDate);
- }
- /**
- * LocalDate类型转为Date
- *
- * @param localDate LocalDate object
- * @return Date object
- */
- public static Date localDate2Date(LocalDate localDate) {
- ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
- return Date.from(zonedDateTime.toInstant());
- }
- /**
- * LocalDateTime类型转为Date
- *
- * @param localDateTime LocalDateTime object
- * @return Date object
- */
- public static Date localDateTime2Date(LocalDateTime localDateTime) {
- return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
- }
- /**
- * 查询当前年的第一天
- *
- * @param pattern 格式,默认格式yyyyMMdd
- * @return 20190101
- */
- public static String getFirstDayOfCurrentYear(String pattern) {
- LocalDateTime localDateTime = LocalDateTime.now().withMonth(1).withDayOfMonth(1);
- if (StringUtils.isEmpty(pattern)) {
- pattern = "yyyyMMdd";
- }
- return format(localDateTime2Date(localDateTime), pattern);
- }
- /**
- * 查询前一年最后一个月第一天
- *
- * @param pattern 格式,默认格式yyyyMMdd
- * @return 20190101
- */
- public static String getLastMonthFirstDayOfPreviousYear(String pattern) {
- LocalDateTime localDateTime = LocalDateTime.now().minusYears(1L).withMonth(12).withDayOfMonth(1);
- if (StringUtils.isEmpty(pattern)) {
- pattern = "yyyyMMdd";
- }
- return format(localDateTime2Date(localDateTime), pattern);
- }
- /**
- * 查询前一年最后一个月第一天
- *
- * @param pattern 格式,默认格式yyyyMMdd
- * @return 20190101
- */
- public static String getLastMonthLastDayOfPreviousYear(String pattern) {
- LocalDateTime localDateTime = LocalDateTime.now().minusYears(1L).with(TemporalAdjusters.lastDayOfYear());
- if (StringUtils.isEmpty(pattern)) {
- pattern = "yyyyMMdd";
- }
- return format(localDateTime2Date(localDateTime), pattern);
- }
- /**
- * 获取当前日期
- *
- * @param pattern 格式,默认格式yyyyMMdd
- * @return 20190101
- */
- public static String getCurrentDay(String pattern) {
- LocalDateTime localDateTime = LocalDateTime.now();
- if (StringUtils.isEmpty(pattern)) {
- pattern = "yyyyMMdd";
- }
- return format(localDateTime2Date(localDateTime), pattern);
- }
- }
基于Java8的日期时间工具类DateTimeFormatter的更多相关文章
- Apache Commons Lang之日期时间工具类
码农不识Apache,码尽一生也枉然. FastDateFormat FastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat.因为是线程安全的,所 ...
- java基础之日期时间工具类
package zy.test; import java.sql.Timestamp; import java.text.ParseException; import java.text.ParseP ...
- java8时间类API安全问题(赠送新的时间工具类哟)
LocalDateTime等新出的日期类全是final修饰的类,不能被继承,且对应的日期变量都是final修饰的,也就是不可变类.赋值一次后就不可变,不存在多线程数据问题. simpleDateFor ...
- 【Hutool】Hutool工具类之日期时间工具——DateUtil
一.用于取代Date对象的DateTime对象 再也不用Date SimpleDateFormat Calendar之间倒腾来倒腾去了!日期创建-获取-操作一步到位! 如果JDK版本更新到了8及以上, ...
- 【Hutool】工具类之日期时间工具-DateUtil
日期时间工具类 一.依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-al ...
- Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,
Java8 ,LocalDate,LocalDateTime处理日期和时间工具类 1.获取今天的日期 2.在Java 8 中获取年.月.日信息 3.在Java 8 中处理特定日期 4.在Java 8 ...
- 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...
- Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate
通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...
- Java日期时间API系列21-----Jdk8中java.time包中的新的日期时间API类,xk-time时间转换,计算,格式化,解析的工具
通过工作之余,对Java8中java.time包源码的不断学习,使用和总结,开发了xk-time,初步完成,欢迎试用和提出建议! xk-time xk-time is a datetime conve ...
随机推荐
- python解析本地HTML文件
Python使用爬虫技术时,每运行一次,本地都会访问一次主机.为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可.现在我来分享一下爬取资料 ...
- eclipse设置格式化tab为4个空格和idea一样
- ALT+J 多行编辑
很方便!!!
- [转帖]oracle补丁类型
oracle补丁类型 https://www.cnblogs.com/liang545621/p/9417919.html 介绍挺好的 跟现在的也比较类似呢. 名称 说明 Release ¤ 标准 ...
- [转帖]PCIe 6.0 v0.3版本草案已完稿:2021年转正、x16带宽飙至128GB/s
PCIe 6.0 v0.3版本草案已完稿:2021年转正.x16带宽飙至128GB/s https://www.cnbeta.com/articles/tech/899389.htm 硬件发展突飞猛进 ...
- [Asp.Net Core] - 使用 ViewComponents 实现分页控件
分页控件(定义分页参数) ~/ViewComponents/PaginationViewComponent.cs using HelloWorld.DataContext; using Microso ...
- 过滤器( filter )的使用
转自:https://www.jianshu.com/p/2ea2b0e4d1f2 过滤器通常 在 web 服务端用的比较多,有要功能 在客户端的请求访问后端资源之前,拦截这些请求. 在服务器的响应发 ...
- 转:对JavaScript中闭包的理解
关于 const let var 总结: 建议使用 let ,而不使用var,如果要声明常量,则用const. ES6(ES2015)出现之前,JavaScript中声明变量只有 ...
- jdbc连接oracle的三种方法
jdbc连接oracle的三种方法 使用service_name,配置方式:jdbc:oracle:thin:@//<host>:<port>/<service_name ...
- 关于python的一次性能调优过程
问题 这两天在公司帮老大写一个程序功能,要求抓取从elasticsearch和kibana服务器上返回的数据,统计所有hits的数据字段ret_code为0的hit,并计算其占有率等一些功能. 功能倒 ...