Java 日期计算工具类(日期比较,类型转换,日期加减计算,首尾日期获取)
时间:2021-09-07
本文章向大家介绍Java 日期计算工具类(日期比较,类型转换,日期加减计算,首尾日期获取),主要包括Java 日期计算工具类(日期比较,类型转换,日期加减计算,首尾日期获取)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package com.igrs.met.utils; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; public class DateUtils { private static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm:ss"; /** * 日期比较 * @return true: t1 > t2 */ public static boolean compare(Date t1 , Date t2 , String formatPattern) { String format1 = dateToStr(t1); String format2 = dateToStr(t2); DateTimeFormatter formatter = DateTimeFormat.forPattern(formatPattern); DateTime season1 = DateTime.parse(format1 , formatter); DateTime season2 = DateTime.parse(format2 , formatter); return season1.isAfter(season2); } /** * date类型 -> string类型 * * @param date * @return */ public static String dateToStr(Date date) { if (date == null) return StringUtils.EMPTY; DateTime dateTime = new DateTime(date); return dateTime.toString(STANDARD_FORMAT); } /** * date类型 -> string类型 * * @param date * @param formatPattern * @return */ public static String dateToStr(Date date, String formatPattern) { if (date == null) return StringUtils.EMPTY; DateTime dateTime = new DateTime(date); return dateTime.toString(formatPattern); } /** * string类型 -> date类型 * * @param timeStr * @return */ public static Date strToDate(String timeStr) { DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(STANDARD_FORMAT); DateTime dateTime = dateTimeFormatter.parseDateTime(timeStr); return dateTime.toDate(); } /** * 判断date日期是否过期(与当前时刻比较) * * @param date * @return */ public static boolean isTimeExpired(Date date) { if (null == date) return true; String timeStr = dateToStr(date); return isBeforeNow(timeStr); } /** * 判断date日期是否过期(与当前时刻比较) * * @param timeStr * @return */ public static boolean isTimeExpired(String timeStr) { if (StringUtils.isBlank(timeStr)) return true; return isBeforeNow(timeStr); } /** * 判断timeStr是否在当前时刻之前 * * @param timeStr * @return */ private static boolean isBeforeNow(String timeStr) { DateTimeFormatter format = DateTimeFormat.forPattern(STANDARD_FORMAT); DateTime dateTime = DateTime.parse(timeStr, format); return dateTime.isBeforeNow(); } /** * 日期加天数 * * @param date * @param days * @return */ public static Date plusDays(Date date, Integer days) { return plusOrMinusDays(date, days, 0); } /** * 日期减天数 * * @param date * @param days * @return */ public static Date minusDays(Date date, Integer days) { return plusOrMinusDays(date, days, 1); } /** * 加减天数 * * @param date * @param days * @param type 0:加天数 1:减天数 * @return */ private static Date plusOrMinusDays(Date date, Integer days, Integer type) { if (null == date) return null; days = null == days ? 0 : days; DateTime dateTime = new DateTime(date); if (type == 0) { dateTime = dateTime.plusDays(days); } else { dateTime = dateTime.minusDays(days); } return dateTime.toDate(); } /** * 日期加分钟 * * @param date * @param minutes * @return */ public static Date plusMinutes(Date date, Integer minutes) { return plusOrMinusMinutes(date, minutes, 0); } /** * 日期减分钟 * * @param date * @param minutes * @return */ public static Date minusMinutes(Date date, Integer minutes) { return plusOrMinusMinutes(date, minutes, 1); } /** * 加减分钟 * * @param date * @param minutes * @param type 0:加分钟 1:减分钟 * @return */ private static Date plusOrMinusMinutes(Date date, Integer minutes, Integer type) { if (null == date) return null; minutes = null == minutes ? 0 : minutes; DateTime dateTime = new DateTime(date); if (type == 0) { dateTime = dateTime.plusMinutes(minutes); } else { dateTime = dateTime.minusMinutes(minutes); } return dateTime.toDate(); } /** * 日期加月份 * * @param date * @param months * @return */ public static Date plusMonths(Date date, Integer months) { return plusOrMinusMonths(date, months, 0); } /** * 日期减月份 * * @param date * @param months * @return */ public static Date minusMonths(Date date, Integer months) { return plusOrMinusMonths(date, months, 1); } /** * 加减月份 * * @param date * @param months * @param type 0:加月份 1:减月份 * @return */ private static Date plusOrMinusMonths(Date date, Integer months, Integer type) { if (null == date) return null; months = null == months ? 0 : months; DateTime dateTime = new DateTime(date); if (type == 0) { dateTime = dateTime.plusMonths(months); } else { dateTime = dateTime.minusMonths(months); } return dateTime.toDate(); } /** * 判断target是否在开始和结束时间之间 * * @param target * @param startTime * @param endTime * @return */ public static boolean isBetweenStartAndEndTime(Date target, Date startTime, Date endTime) { if (null == target || null == startTime || null == endTime) { return false; } DateTime dateTime = new DateTime(target); return dateTime.isAfter(startTime.getTime()) && dateTime.isBefore(endTime.getTime()); } /** * 获取当前月第一天 * @param month * @return String yyyy-MM-dd hh:mm:ss */ public static String getFirstDayOfMonth(int month) { Calendar calendar = Calendar.getInstance(); // 设置月份 calendar.set(Calendar.MONTH, month - 1); // 获取某月最小天数 int firstDay = calendar.getActualMinimum(Calendar.DAY_OF_MONTH); // 设置日历中月份的最小天数 calendar.set(Calendar.DAY_OF_MONTH, firstDay); // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(calendar.getTime())+" 00:00:00"; } /** * 获取当前月最后一天 * @param month * @return String yyyy-MM-dd hh:mm:ss */ public static String getLastDayOfMonth(int month) { Calendar calendar = Calendar.getInstance(); // 设置月份 calendar.set(Calendar.MONTH, month - 1); // 获取某月最大天数 int lastDay=0; //2月的平年瑞年天数 if(month==2) { // 这个api在计算2020年2月的过程中有问题 lastDay = calendar.getLeastMaximum(Calendar.DAY_OF_MONTH); }else { lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } // 设置日历中月份的最大天数 calendar.set(Calendar.DAY_OF_MONTH, lastDay); // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(calendar.getTime())+" 23:59:59"; } }
原文地址:https://www.cnblogs.com/gongshun/p/15236833.html
- 具体问题解决:分离脚本
- 独家 | 手把手教你用Python 3创建用于机器学习开发的Linux虚拟机(附安装教程、代码)
- TSQL--临时表和表变量
- 微软开源 C++ REST SDK
- 使用Autofac在ASP.NET Web API上实现依赖注入
- Universal-Image-Loader完全解析--从源代码分析Universal-Image-Loader中的线程池
- 我是怎样爬下6万共享单车数据并进行分析的(附代码)
- 数据库压缩备份提高备份效率
- 教你用TensorFlow和自编码器模型生成手写数字(附代码)
- 开源OCR引擎Tesseract
- 数据仓库中如何使用索引
- PowerBI 引入时间智能
- 列存储索引1:初识列存储索引
- 通过案例来学习TCP的MSS、MTU
- 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 文档注释