概述
Apache Commons lang是Apache基金会创建并维护的Java函数库。它提供了许多类使得开发者的常见任务变得简单,同时减少重复(boiler-plate)代码,这些代码可能遍布于每个独立的项目中,你却不得不重复的编写。这些类由经验丰富的开发者维护,对各种问题的边界条件考虑周到,并持续修复相关bug。
日期时间工具类DateUtils位于该包下。
依赖包
<!-- apache commons工具包 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
工具类
1.时间工具类
类名为DateUtils
1.1 加减日期
//提供从毫秒到年的加减方法,amount参数为负数代表减
public static Date addMilliseconds(Date date,int amount)
public static Date addSeconds(Date date,int amount)
public static Date addMinites(Date date,int amount)
public static Date addHours(Date date,int amount)
public static Date addDays(Date date,int amount)
public static Date addWeeks(Date date,int amount)
public static Date addMonths(Date date,int amount)
public static Date addYears(Date date,int amount)
1.2 向上取整
向上取整
public static Date ceiling(Date date,int field)
public static Calendar ceiling(Calendar date,int field)
public static Date ceiling(Object date,int field)
field参数为整形,与Calendar中的以下常量值对应
Calendar.MILLISECOND
Calendar.SECOND
Calendar.MINUTE
Calendar.HOUR
Calendar.DATE
Calendar.MONTH
Calendar.YEAR
此外,之所以没有提供对称的向下取整,是因为通过格式化功能很容易获取到对应的整数
1.3 获取序次
//以下方法均有重载方法,第一个参数类型可为Date
//获取当前天数在指定范围内排第几
public static long getFragmentInDays(Calendar calendar,int fragment)
//获取当前小时数在指定范围内排第几
public static long getFragmentInHours(Calendar calendar,int fragment)
//获取当前分钟数在指定范围内排第几
public static long getFragmentInMinutes(Calendar calendar,int fragment)
//获取当前秒数在指定范围内排第几
public static long getFragmentInSeconds(Calendar calendar,int fragment)
//获取当前毫秒数在指定范围内排第几
public static long getFragmentInMilliseconds(Calendar calendar,int fragment)
fragment参数有效取值(没有周)为如下:
Calendar.YEAR
Calendar.MONTH
Calendar.DATE
Calendar.MINUTE
Calendar.SECOND
Calendar.MILLISECOND
注意:当指定获取的时间单位大于等于范围时间单位时,如获取某一天在小时内的序次,不会报错,但返回值为0。
1.4 时间判定
//判断是否同一天,忽略掉时间
public static boolean isSameDay(Date date1,Date date2)
public static boolean isSameDay(Calendar cal1,Calendar cal2)
//判断是否是同一时间点(比对毫秒数相等)
public static boolean isSameInstant(Date date1,Date date2)
public static boolean isSameInstant(Calendar cal1,Calendar cal2)
//比对两个时间的值是否相等
public static boolean isSameLocalTime(Calendar cal1,Calendar cal2)