public final class DateUtil extends Object
Date操作工具类(feilong-core核心类之一).
字段 说明 字符串转日期 日期转字符串 日期加减 获得日期某部值 判断闰年 判断相等 判断早晚 判断日期区间
字段 说明 获得下一周的第一天时间 DateUtil.getFirstDateOfThisWeek(DateUtil.addDay(date, 7)); 获得下一周的最后一天时间 DateUtil.getLastDateOfThisWeek(DateUtil.addDay(date, 7)); 获得上一周的第一天时间 DateUtil.getFirstDateOfThisWeek(DateUtil.addDay(date, -7)); 获得上一周的最后一天时间 DateUtil.getLastDateOfThisWeek(DateUtil.addDay(date, -7)); 获得下个月第一天 DateUtil.getFirstDateOfThisMonth(DateUtil.addMonth(now, +1))); 获得下个月最后一天 DateUtil.getLastDateOfThisMonth(DateUtil.addMonth(now, +1))); 获得上个月第一天 DateUtil.getFirstDateOfThisMonth(DateUtil.addMonth(now, -1))); 获得上个月最后一天 DateUtil.getLastDateOfThisMonth(DateUtil.addMonth(now, -1))); 获得去年第一天 DateUtil.getFirstDateOfThisYear(DateUtil.addYear(now, -1)); 获得去年最后一天 DateUtil.getLastDateOfThisYear(DateUtil.addYear(now, -1))); 获得明年第一天 DateUtil.getFirstDateOfThisYear(DateUtil.addYear(now, +1)); 获得明年最后一天 DateUtil.getLastDateOfThisYear(DateUtil.addYear(now, +1)));
CalendarUtil,
DatePattern,
DateUtils| Modifier and Type | Method and Description |
|---|---|
static Date |
addDay(Date date,
int day)
指定日期
date加减天数. |
static Date |
addHour(Date date,
int hour)
指定日期
date加减小时. |
static Date |
addMillisecond(Date date,
int millisecond)
指定日期
date加减毫秒. |
static Date |
addMinute(Date date,
int minute)
指定日期
date加减分钟. |
static Date |
addMonth(Date date,
int month)
指定日期
date加减月份. |
static Date |
addSecond(Date date,
int second)
指定日期
date加减秒. |
static Date |
addWeek(Date date,
int week)
指定日期
date加减星期 . |
static Date |
addYear(Date date,
int year)
指定日期
date,加减年份. |
static int |
getDayOfMonth(Date date)
获得指定日期
date是当前月的几号. |
static int |
getDayOfWeek(Date date)
获得指定日期
date在当前星期是星期几. |
static int |
getDayOfYear(Date date)
获得指定日期
date是当年中的第几天. |
static Date |
getFirstDateOfThisDay(Date date)
获得指定日期
date的 00:00:00.000时间. |
static Date |
getFirstDateOfThisMonth(Date date)
获得指定日期
date所在月的第一天,00:00:00.000到毫秒. |
static Date |
getFirstDateOfThisWeek(Date date)
获得指定日期所在的星期第一天(周日)
00:00:00.000 到毫秒. |
static Date |
getFirstDateOfThisYear(Date date)
获得指定日期
date所在年的第一天,00:00:00.000 到毫秒. |
static int |
getHourOfDay(Date date)
获得指定日期
date中的小时(24小时制). |
static int |
getHourOfYear(Date date)
获得指定日期
date在它一年中的小时数. |
static Date |
getLastDateOfThisDay(Date date)
获得指定日期
date的 23:59:59.999时间. |
static Date |
getLastDateOfThisMonth(Date date)
获得指定日期
date所在月的最后一天,23:59:59.999 到毫秒. |
static Date |
getLastDateOfThisWeek(Date date)
获得指定日期所在星期的最后一天(周六)
23:59:59.999 到毫秒. |
static Date |
getLastDateOfThisYear(Date date)
获得指定日期
date所在年的最后一天 23:59:59.999 到毫秒. |
static int |
getMinute(Date date)
获得指定日期
date中的分钟. |
static int |
getMonth(Date date)
获得指定日期
date中的月份 (已经+1处理). |
static int |
getSecond(Date date)
获得指定日期
date中的秒. |
static int |
getSecondOfDay(Date date)
获得指定日期
date在当天中的秒数,最大值86400. |
static int |
getSecondOfHour(Date date)
获得指定日期
date在当前小时中的秒数,最大值3600 TimeInterval.SECONDS_PER_HOUR. |
static long |
getTime(Date date)
返回自
1970年1月1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数. |
static int |
getWeekOfYear(Date date)
指定日期
date年中的星期数. |
static int |
getYear(Date date)
获得指定日期
date中的年份. |
static boolean |
isAfter(Date date,
Date whenDate)
判断指定日期
date是否在 whenDate时间之后. |
static boolean |
isBefore(Date date,
Date whenDate)
判断指定日期
date是否 在 whenDate时间之前. |
static boolean |
isEquals(Date date1,
Date date2,
String datePattern)
在相同格式下
datePattern,将两个日期转成字符串判断是否相等. |
static boolean |
isInTime(Date date,
Date beginDate,
Date endDate)
判断指定日期
date 是否在 beginDate 和 endDate两个时间之间. |
static boolean |
isLeapYear(int year)
判断指定年
year 是否为闰年 . |
static boolean |
isToday(Date date)
判断指定的日期
date,是不是今天的日期. |
static Date |
now()
此时此刻的
Date. |
static String |
nowString(String datePattern)
将此时此刻转成时间字符串.
|
static Date |
toDate(String dateString,
String... datePatterns)
将时间字符串
dateString 使用一个或者多个不同的 datePattern 模式按照顺序转换成date类型. |
static String |
toString(Date date,
String datePattern)
将指定日期
date转换成特殊格式 datePattern 的字符串. |
public static Date now()
Date.
使用静态导入 static import,开发效率要高于自己写 new Date()
public static String nowString(String datePattern)
DateUtil.toString(new Date(), COMMON_DATE_AND_TIME)可以简写(使用静态导入 static import更精简)DateUtil.nowString(COMMON_DATE_AND_TIME)尤其DateUtil.toString(Calendar.getInstance().getTime(), DatePattern.COMMON_DATE_AND_TIME)可以简写成(使用静态导入 static import更精简):DateUtil.nowString(COMMON_DATE_AND_TIME)
datePattern - the date patterndatePattern 是null,抛出 NullPointerExceptiondatePattern 是blank,抛出 IllegalArgumentExceptionpublic static Date getFirstDateOfThisDay(Date date)
date的 00:00:00.000时间.
DateUtil.getFirstDateOfThisDay(2011-01-01 10:20:20) =2011-01-01 00:00:00
date - 任意时间date 是null,抛出 NullPointerExceptionDateUtils.truncate(Date, int)public static Date getLastDateOfThisDay(Date date)
date的 23:59:59.999时间.
DateUtil.getLastDateOfThisDay(2011-01-01 10:20:20)=2011-01-01 23:59:59.999
date - 任意时间date 是null,抛出 NullPointerExceptionpublic static Date getFirstDateOfThisWeek(Date date)
00:00:00.000 到毫秒.
DateUtil.getFirstDateOfThisWeek(2012-10-11 17:10:30.701) =2012-10-07 00:00:00.000 DateUtil.getFirstDateOfThisWeek(2014-01-01 05:00:00) =2013-12-29 00:00:00.000 //跨年
- 按照外国制,周日为一个星期第一天,周六为最后一天
- 会自动跨月,跨年操作
date - 任意时间date 是null,抛出 NullPointerExceptiontoCalendar(Date),
Calendar.set(int, int),
CalendarUtil.resetDayBegin(Calendar),
Calendar.getTime()public static Date getLastDateOfThisWeek(Date date)
23:59:59.999 到毫秒.
DateUtil.getLastDateOfThisWeek(2012-10-11 17:10:30.701) =2012-10-13 23:59:59.999 DateUtil.getLastDateOfThisWeek(2014-12-31 05:00:00) =2015-01-03 23:59:59.999 //跨年
- 按照外国制,周日为一个星期第一天,周六为最后一天
- 会自动跨月,跨年操作
date - 任意时间date 是null,抛出 NullPointerExceptiontoCalendar(Date),
Calendar.set(int, int),
CalendarUtil.resetDayEnd(Calendar),
Calendar.getTime()public static Date getFirstDateOfThisMonth(Date date)
date所在月的第一天,00:00:00.000到毫秒.
DateUtil.getFirstDateOfThisMonth(2012-10-11 17:10:30.701)=2012-10-01 00:00:00.000
date - 任意时间date 是null,抛出 NullPointerExceptiontoCalendar(Date),
Calendar.set(int, int),
CalendarUtil.resetDayBegin(Calendar),
Calendar.getTime()public static Date getLastDateOfThisMonth(Date date)
date所在月的最后一天,23:59:59.999 到毫秒.
以指定日期 date 月的实际天数为准,也就是说,2月会自动区分闰年 是28天还是29天
DateUtil.getLastDateOfThisMonth(2012-10-11 17:10:30.701)=2012-10-31 23:59:59.999 DateUtil.getLastDateOfThisMonth(2016-02-22 01:00:00)=2016-02-29 23:59:59.999 DateUtil.getLastDateOfThisMonth(2015-02-22 01:00:00)=2015-02-28 23:59:59.999
date - 任意时间date 是null,抛出 NullPointerExceptiontoCalendar(Date),
Calendar.set(int, int),
CalendarUtil.resetDayEnd(Calendar),
Calendar.getTime()public static Date getFirstDateOfThisYear(Date date)
date所在年的第一天,00:00:00.000 到毫秒.
DateUtil.getFirstDateOfThisYear(2012-10-11 17:10:30.701)=2012-01-01 00:00:00.000
date - 任意时间date 是null,抛出 NullPointerExceptiontoCalendar(Date),
Calendar.set(int, int),
CalendarUtil.resetDayBegin(Calendar),
Calendar.getTime()public static Date getLastDateOfThisYear(Date date)
date所在年的最后一天 23:59:59.999 到毫秒.
DateUtil.getLastDateOfThisYear(2012-10-11 17:10:30.701)=2012-12-31 23:59:59.999
date - 任意时间date 是null,抛出 NullPointerExceptiontoCalendar(Date),
Calendar.set(int, int),
CalendarUtil.resetDayEnd(Calendar),
Calendar.getTime()public static Date addYear(Date date, int year)
date,加减年份.
- 结果会自动跨月,跨年计算.
- 传入的参数
date不会改变
DateUtil.addYear(2012-06-29 00:33:05,5) =2017-06-29 00:33:05 DateUtil.addYear(2012-06-29 00:33:05,-5) =2007-06-29 00:33:05
date - 任意时间year - 加减年数 ,可以是负数,表示前面多少date是null,抛出 IllegalArgumentExceptionyear==0,那么什么都不做,返回 date,参见 GregorianCalendar.add(int, int)IllegalArgumentException - 如果 date 是nullCalendar.YEAR,
DateUtils.addYears(Date, int)public static Date addMonth(Date date, int month)
date加减月份.
- 结果会自动跨月,跨年计算.
- 传入的参数
date不会改变
DateUtil.addMonth(2012-10-16 23:12:43,5) =2013-03-16 23:12:43.932 DateUtil.addMonth(2012-10-16 23:12:43,-5) =2012-05-16 23:12:43.943
date - 任意时间month - 加减月份, 可以是负数,表示前面多少date是null,抛出 IllegalArgumentExceptionmonth==0,那么什么都不做,返回 date,参见 GregorianCalendar.add(int, int)IllegalArgumentException - 如果 date 是nullCalendar.MONTH,
DateUtils.addMonths(Date, int)public static Date addDay(Date date, int day)
date加减天数.
- 结果会自动跨月,跨年计算.
- 传入的参数
date不会改变
DateUtil.addDay(2012-06-29 00:42:26,5) =2012-07-04 00:42:26 DateUtil.addDay(2012-06-29 00:42:26,-5) =2012-06-24 00:42:26 DateUtil.addDay(2014-12-31 02:10:05,5) =2015-01-05 02:10:05.000 DateUtil.addDay(2014-01-01 02:10:05,-5) =2013-12-27 02:10:05.000
date - 任意时间day - 需要加减的天数,可以是负数,表示前面多少date是null,抛出 IllegalArgumentExceptionday==0,那么什么都不做,返回 date,参见 GregorianCalendar.add(int, int)IllegalArgumentException - 如果 date 是nullCalendar.DAY_OF_MONTH,
DateUtils.addDays(Date, int)public static Date addWeek(Date date, int week)
date加减星期 .
- 结果会自动跨月,跨年计算.
- 传入的参数
date不会改变
DateUtil.addWeek(2012-06-29 00:45:18,5) =2012-08-03 00:45:18 DateUtil.addWeek(2012-06-29 00:45:18,-5) =2012-05-25 00:45:18
date - 任意时间week - 需要加减的星期数,可以是负数,表示前面多少date是null,抛出 IllegalArgumentExceptionweek==0,那么什么都不做,返回 date,参见 GregorianCalendar.add(int, int)IllegalArgumentException - 如果 date 是nullDateUtils.addWeeks(Date, int)public static Date addHour(Date date, int hour)
date加减小时.
- 结果会自动跨月,跨年计算.
- 传入的参数
date不会改变
DateUtil.addHour(2012-06-29 00:46:24,5) =2012-06-29 05:46:24 DateUtil.addHour(2012-06-29 00:46:24,-5) =2012-06-28 19:46:24
date - 任意时间hour - 加减小时数,可以是负数,表示前面多少date是null,抛出 IllegalArgumentExceptionhour==0,那么什么都不做,返回 date,参见 GregorianCalendar.add(int, int)IllegalArgumentException - 如果 date 是nullDateUtils.addHours(Date, int)public static Date addMinute(Date date, int minute)
date加减分钟.
- 结果会自动跨月,跨年计算.
- 传入的参数
date不会改变
DateUtil.addMinute(2012-10-16 23:20:33,180) =2012-10-17 02:20:33.669 DateUtil.addMinute(2012-10-16 23:20:33,-180) =2012-10-16 20:20:33.669
date - 任意时间minute - 加减分钟数,可以是负数,表示前面多少date是null,抛出 IllegalArgumentExceptionminute==0,那么什么都不做,返回 date,参见 GregorianCalendar.add(int, int)IllegalArgumentException - 如果 date 是nullDateUtils.addMinutes(Date, int)public static Date addSecond(Date date, int second)
date加减秒.
- 结果会自动跨月,跨年计算.
- 传入的参数
date不会改变
DateUtil.addSecond(2012-10-16 23:22:02,180) = 2012-10-16 23:25:02.206 DateUtil.addSecond(2012-10-16 23:22:02,-180) = 2012-10-16 23:19:02.206
date - 任意时间second - 加减秒,可以是负数,表示前面多少date是null,抛出 IllegalArgumentExceptionsecond==0,那么什么都不做,返回 date,参见 GregorianCalendar.add(int, int)IllegalArgumentException - 如果 date 是nullDateUtils.addSeconds(Date, int)public static Date addMillisecond(Date date, int millisecond)
date加减毫秒.
- 结果会自动跨月,跨年计算.
- 传入的参数
date不会改变
DateUtil.addMillisecond(2015-09-07 13:35:02.769,5000) =2015-09-07 13:35:07.769 DateUtil.addMillisecond(2015-09-07 13:35:02.769,-5000) =2015-09-07 13:34:57.769
date - 任意时间millisecond - 加减毫秒,可以是负数,表示前面多少date是null,抛出 IllegalArgumentExceptionmillisecond==0,那么什么都不做,返回 date,参见 GregorianCalendar.add(int, int)IllegalArgumentException - 如果 date 是nullDateUtils.addMilliseconds(Date, int)public static int getYear(Date date)
date中的年份.
DateUtil.getYear(toDate("2012-06-29 00:26:53", COMMON_DATE_AND_TIME)) = 2012
DateUtil.getYear(toDate("2016-07-16", COMMON_DATE)) = 2016
DateUtil.getYear(toDate("2016-13-16", COMMON_DATE)) = 2017
date - 任意时间date 是null,抛出 NullPointerExceptionCalendarUtil.getFieldValue(Date, int),
Calendar.YEARpublic static int getMonth(Date date)
date中的月份 (已经+1处理).
DateUtil.getMonth(2012-06-29) =6
date - 任意时间date 是null,抛出 NullPointerExceptionCalendarUtil.getFieldValue(Date, int),
Calendar.MONTHpublic static int getWeekOfYear(Date date)
date年中的星期数.
DateUtil.getWeekOfYear(2014-06-03) =23 DateUtil.getWeekOfYear(2014-01-01) =1 DateUtil.getWeekOfYear(2014-12-29) =1 DateUtil.getWeekOfYear(2014-12-20) =51 DateUtil.getWeekOfYear(2014-12-26) =52
- 一年中第一个星期的值为 1,一年52(365/7=52.14)个星期
- 2014年的1-1 1-2 1-3 1-4 得出的
Calendar.WEEK_OF_YEAR是1;
2014年的12-28 12-29 12-30 12-31 得出的Calendar.WEEK_OF_YEAR也是1Calendar.setMinimalDaysInFirstWeek(int)可以来修改第一周最小天数,但是如果设置为7的话DateUtil.getWeekOfYear(2014-01-01) =52 DateUtil.getWeekOfYear(2014-12-31) =52可以看出,如果从1月1号算开始第一周的话,这年第一周时间不够我们设置的7天,那么1月1号算上一年的星期
date - 任意时间date 是null,抛出 NullPointerExceptionCalendarUtil.getFieldValue(Date, int),
Calendar.WEEK_OF_YEAR,
Calendar.getFirstDayOfWeek(),
Calendar.getMinimalDaysInFirstWeek(),
Calendar.setMinimalDaysInFirstWeek(int)public static int getDayOfYear(Date date)
date是当年中的第几天.
DateUtil.getDayOfYear(2013-01-01) =1 DateUtil.getDayOfYear(2013-01-05) =5 DateUtil.getDayOfYear(2016-12-31) =366 DateUtil.getDayOfYear(2016-02-01) =32
date - 任意时间date 是null,抛出 NullPointerExceptionCalendar.DAY_OF_YEARpublic static int getDayOfMonth(Date date)
date是当前月的几号.
DateUtil.getDayOfMonth(2012-06-29) =29 DateUtil.getDayOfMonth(2013-01-05) =5 DateUtil.getDayOfMonth(2016-12-31) =31 DateUtil.getDayOfMonth(2016-02-01) =1
date - 任意时间date 是null,抛出 NullPointerExceptionCalendarUtil.getFieldValue(Date, int),
Calendar.DAY_OF_MONTHpublic static int getDayOfWeek(Date date)
date在当前星期是星期几.
DateUtil.getDayOfWeek(2012-6-29) =6 是FRIDAY星期5 DateUtil.getDayOfWeek(2016-08-16) =Calendar.TUESDAYDateUtil.getDayOfWeek(2016-12-31) =Calendar.SATURDAYDateUtil.getDayOfWeek(2016-02-01) =Calendar.MONDAY
date - 任意时间date 是null,抛出 NullPointerExceptionCalendar.SUNDAY,
Calendar.MONDAY,
Calendar.TUESDAY,
Calendar.WEDNESDAY,
Calendar.THURSDAY,
Calendar.FRIDAY,
Calendar.SATURDAY,
CalendarUtil.getFieldValue(Date, int),
Calendar.DAY_OF_WEEKpublic static int getHourOfYear(Date date)
date在它一年中的小时数.
max value: 8784.
DateUtil.getHourOfYear(2013-01-01 00:00:05) =0 DateUtil.getHourOfYear(2013-01-01 01:00:05) =1 DateUtil.getHourOfYear(2013-01-05 12:00:05) =108 DateUtil.getHourOfYear(2013-09-09 17:28) =6041
date - 任意时间date 是null,抛出 NullPointerExceptionpublic static int getHourOfDay(Date date)
date中的小时(24小时制).
DateUtil.getHourOfDay(toDate("2012-06-29 00:26:53", COMMON_DATE_AND_TIME)) =0
DateUtil.getHourOfDay(toDate("2016-07-16 22:34:00", COMMON_DATE_AND_TIME)) =22
date - 任意时间date 是null,抛出 NullPointerExceptionCalendarUtil.getFieldValue(Date, int),
Calendar.HOUR_OF_DAYpublic static int getMinute(Date date)
date中的分钟.
DateUtil.getMinute(2012-6-29 00:26:53) =26
date - 任意时间date 是null,抛出 NullPointerExceptionCalendarUtil.getFieldValue(Date, int),
Calendar.MINUTEpublic static int getSecond(Date date)
date中的秒.
DateUtil.getSecond(2012-6-29 00:26:53) =53
date - 任意时间date 是null,抛出 NullPointerExceptionCalendarUtil.getFieldValue(Date, int),
Calendar.SECONDpublic static int getSecondOfDay(Date date)
date在当天中的秒数,最大值86400.
DateUtil.getSecondOfDay(2013-09-09 16:42:41)= 60161
date - 任意时间date 是null,抛出 NullPointerExceptionTimeInterval.SECONDS_PER_DAY,
TimeInterval.SECONDS_PER_HOUR,
getSecondOfHour(Date)public static int getSecondOfHour(Date date)
date在当前小时中的秒数,最大值3600 TimeInterval.SECONDS_PER_HOUR.
DateUtil.getSecondOfHour(2013-09-15 01:15:23)= 923
date - 任意时间date 是null,抛出 NullPointerExceptionTimeInterval.SECONDS_PER_MINUTE,
TimeInterval.SECONDS_PER_HOURpublic static long getTime(Date date)
1970年1月1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数.
DateUtil.getTime(2012-06-29 00:28:00)= 1340900880000L
date - 任意时间Date.getTime() date 是null,抛出 NullPointerExceptionpublic static String toString(Date date, String datePattern)
date转换成特殊格式 datePattern 的字符串.
DateUtil.toString(Tue Oct 16 23:49:21 CST 2012,DatePattern.COMMON_DATE_AND_TIME_WITH_MILLISECOND) =2012-10-16 23:49:21.525
date - 任意时间datePattern - 模式 DatePatterndate 是null,抛出 NullPointerExceptionpattern 是 null,抛出 NullPointerExceptionpattern 是 blank,抛出 IllegalArgumentExceptionDateFormatUtils.format(Date, String),
"org.joda.time.base.AbstractDateTime#toString(String)",
convert-java-util-date-to-string,
change-date-format-in-a-java-stringpublic static Date toDate(String dateString, String... datePatterns)
dateString 使用一个或者多个不同的 datePattern 模式按照顺序转换成date类型.
DateUtil.toDate("2016-02-33", DatePattern.COMMON_DATE) = 2016-03-04
DateUtil.toDate("2016-06-28T01:21:12-0800", "yyyy-MM-dd'T'HH:mm:ssZ") = 2016-06-28 17:21:12
DateUtil.toDate("2016-06-28T01:21:12+0800", "yyyy-MM-dd'T'HH:mm:ssZ") = 2016-06-28 01:21:12
- 转换的时候,使用日历的宽松模式,参见
DateFormat.setLenient(boolean),即支持传入"2016-02-33",会转换成 2016-03-04- 如果能解析所有的字符串,那么视为成功
- 如果没有任何的模式匹配,将会抛出异常
- 如果转换有异常,会将
ParseException转成IllegalArgumentException返回,是 UnCheckedException异常 ,不需要强制catch处理
经常我们会看到小伙伴写出下面的代码:SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date publishTimeDate = null; try{ publishTimeDate = format.parse(publishTime); }catch (ParseException e1){ e1.printStackTrace(); }可以看到直接使用
SimpleDateFormat来写代码的话,代码行数较多,并且还需要自行处理 ParseException checkedException异常, 而且catch里面一般都是写的废话此时你可以一行代码搞定:
Date publishTimeDate = DateUtil.toDate(publishTime, DatePattern.COMMON_DATE_AND_TIME_WITHOUT_SECOND);
dateString - 时间字符串datePatterns - 模式,时间字符串的模式DatePatterndateString 是null,抛出 NullPointerExceptiondateString 是blank,抛出 IllegalArgumentExceptiondatePatterns 是 null,抛出 NullPointerExceptiondatePatterns 是 empty,抛出 IllegalArgumentExceptiondatePatterns 有元素是 null,抛出 IllegalArgumentExceptionDateUtils.parseDate(String, String...),
java-string-to-date-conversion,
java-string-to-date-
conversion/22180505#22180505,
convert-string-to-java-util-datepublic static boolean isBefore(Date date, Date whenDate)
date是否 在 whenDate时间之前.
isBefore(null, toDate("2011-03-10", COMMON_DATE)) = false
isBefore(toDate("2011-05-01", COMMON_DATE), toDate("2011-04-01", COMMON_DATE)) = false
isBefore(toDate("2011-03-05", COMMON_DATE), toDate("2011-03-10", COMMON_DATE)) = true
date - 指定日期whenDate - 比照日期whenDate 是null,抛出 NullPointerExceptiondate 是null,返回falsedate.before(whenDate)Date.before(Date)public static boolean isAfter(Date date, Date whenDate)
date是否在 whenDate时间之后.
isAfter(null,toDate("2011-05-01", COMMON_DATE)) = false
isAfter(toDate("2011-04-01", COMMON_DATE),toDate("2011-05-01", COMMON_DATE)) = false
isAfter(toDate("2011-03-10", COMMON_DATE),toDate("2011-03-05", COMMON_DATE)) = true
date - 指定的日期whenDate - 比照日期whenDate 是null,抛出 NullPointerException date 是null,返回falsedate.after(whenDate)Date.after(Date)public static boolean isInTime(Date date, Date beginDate, Date endDate)
date 是否在 beginDate 和 endDate两个时间之间.
DateUtil.isInTime("2012-10-16 23:00:02", "2012-10-10 22:59:00", "2012-10-18 22:59:00") = true
date - 指定日期beginDate - 开始时间endDate - 结束时间date 在 beginDate之后, 并且指定日期 date 在 endDate之前,返回trueNullPointerException - 如果 date 是null,或者 beginDate 是null 或者 endDate 是nullDate.after(Date),
Date.before(Date)public static boolean isToday(Date date)
date,是不是今天的日期.
DateUtil.isToday(new Date()) = true
// 如果今天 是2017年12月14日
DateUtil.isToday(toDate("2016-06-16 22:59:00", COMMON_DATE_AND_TIME)) = false
1000000 循环,
- DateUtils#isSameDay(Date, Date) ,893毫秒;
- isEquals(date, new Date(), DatePattern.COMMON_DATE),1秒335毫秒
- DateExtensionUtil.getDayStartAndEndPair 1秒185毫秒
date - 指定的日期date 是null,抛出 NullPointerExceptionDateUtils.isSameDay(Date, Date)public static boolean isEquals(Date date1, Date date2, String datePattern)
datePattern,将两个日期转成字符串判断是否相等.
DateUtil.isEquals(toDate("2016-06-16 22:59:00", COMMON_DATE_AND_TIME), toDate("2016-06-16", COMMON_DATE), COMMON_DATE) = true
- 常用于判断两个时间是否是同一个时间段,比如相同day,相同小时,相同年等等
date1 - 日期1date2 - 日期2datePattern - 格式 DatePatterndate1 == date2 直接返回truedate1 是null,抛出 NullPointerExceptiondate2 是null,抛出 NullPointerExceptionpattern 是 null,抛出 NullPointerExceptionpattern 是 blank,抛出 IllegalArgumentExceptiontoString(Date, String),
DateUtils.isSameDay(Date, Date)public static boolean isLeapYear(int year)
year 是否为闰年 .
规则: (year % 4 == 0 && year % 100 != 0) || year % 400 == 0
地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year).
公历的平年只有365日,比回归年短约0.2422日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年.
现行公历中每400年有97个闰年.按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,
因此,每四百年中要减少三个闰年.所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是100的倍数,也是平年,
这就是通常所说的:四年一闰,百年不闰,四百年再闰.
例如,2000年是闰年,1900年则是平年.
year - 年份GregorianCalendar.isLeapYear(int),
Leap_yearCopyright © 2008-2019 by feilong