详解Java中日期工具类的操作
Java 提供了 java.util.Date 和 java.util.Calendar 两个类来操作日期,但是由于它们的设计缺陷,使用起来不够方便,因此出现了许多常用且好用的日期工具类,如:Joda-Time、Time4j、Date4j、Apache Commons Lang 等。本文将以 Apache Commons Lang 中的日期工具类为例,详细讲解 Java 中日期工具类的操作。
1. 引入依赖
在使用 Apache Commons Lang 的日期工具类之前,需要先引入其相关的依赖。在 Maven 中,可以将以下依赖加入项目的 pom.xml 文件中:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
2. 常用方法
Apache Commons Lang 中的日期工具类提供了许多常用的方法,如获取当前日期、格式化日期、解析日期等,下面将介绍其中一部分方法。
2.1 获取当前日期和时间
要获取当前日期和时间,可以使用 DateUtils 类中的方法:
Date now = DateUtils.now(); // 获取当前日期和时间
2.2 格式化日期和时间
要将日期和时间格式化成字符串,可以使用 DateFormatUtils 类中的方法:
String nowStr = DateFormatUtils.format(now, "yyyy-MM-dd HH:mm:ss"); // 转换成 "2020-01-01 10:00:00" 格式的字符串
其中第二个参数为日期格式化字符串,具体格式化字符的含义可以参考 SimpleDateFormat 文档。
2.3 解析日期和时间
要将字符串解析成日期和时间,可以使用 DateUtils 类中的方法:
Date date = DateUtils.parseDate("2020-01-01 10:00:00", "yyyy-MM-dd HH:mm:ss"); // 将字符串转换成日期类型
其中第一个参数为待解析的字符串,第二个参数为日期格式化字符串。
3. 示例
下面给出两个示例:
3.1 示例一:计算日期
计算指定日期一周前的日期:
Date date = DateUtils.parseDate("2020-01-01 10:00:00", "yyyy-MM-dd HH:mm:ss"); // 解析日期字符串
Date oneWeekBefore = DateUtils.addWeeks(date, -1); // 计算一周前的日期
String oneWeekBeforeStr = DateFormatUtils.format(oneWeekBefore, "yyyy-MM-dd HH:mm:ss"); // 转换成 "2019-12-25 10:00:00" 格式的字符串
3.2 示例二:判断日期是否在指定时间段内
判断指定日期是否在 2020 年的第一季度(即 1 月 1 日~3 月 31 日):
Date date = DateUtils.parseDate("2021-02-15 10:00:00", "yyyy-MM-dd HH:mm:ss"); // 解析日期字符串
Date start = DateUtils.parseDate("2020-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss"); // 获取指定时间段的起始日期
Date end = DateUtils.parseDate("2020-03-31 23:59:59", "yyyy-MM-dd HH:mm:ss"); // 获取指定时间段的结束日期
boolean isInFirstQuarter = DateUtils.isInRange(date, start, end); // 判断日期是否在指定时间段内
如果 isInFirstQuarter 为 true,则表示指定日期在 2020 年的第一季度内。
4. 总结
使用 Java 中的日期工具类可以避免使用底层类的一些讨厌问题,如日期格式等。Apache Commons Lang 中的日期工具类提供了许多常用的方法,通过本文讲解的示例,相信读者已经对日期工具类有了一定的了解。
完整代码:
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.util.Date;
public class DateUtilExample {
public static void main(String[] args) throws Exception {
// 示例一:计算日期
Date date = DateUtils.parseDate("2020-01-01 10:00:00", "yyyy-MM-dd HH:mm:ss"); // 解析日期字符串
Date oneWeekBefore = DateUtils.addWeeks(date, -1); // 计算一周前的日期
String oneWeekBeforeStr = DateFormatUtils.format(oneWeekBefore, "yyyy-MM-dd HH:mm:ss"); // 转换成 "2019-12-25 10:00:00" 格式的字符串
System.out.println("一周前的日期:" + oneWeekBeforeStr);
// 示例二:判断日期是否在指定时间段内
Date date2 = DateUtils.parseDate("2021-02-15 10:00:00", "yyyy-MM-dd HH:mm:ss"); // 解析日期字符串
Date start = DateUtils.parseDate("2020-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss"); // 获取指定时间段的起始日期
Date end = DateUtils.parseDate("2020-03-31 23:59:59", "yyyy-MM-dd HH:mm:ss"); // 获取指定时间段的结束日期
boolean isInFirstQuarter = DateUtils.isInRange(date2, start, end); // 判断日期是否在指定时间段内
System.out.println("指定日期是否在 2020 年的第一季度内:" + isInFirstQuarter);
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中日期工具类的操作 - Python技术站