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,抛出 NullPointerException
datePattern
是blank,抛出 IllegalArgumentException
public 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,抛出 NullPointerException
DateUtils.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,抛出 NullPointerException
public 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,抛出 NullPointerException
toCalendar(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,抛出 NullPointerException
toCalendar(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,抛出 NullPointerException
toCalendar(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,抛出 NullPointerException
toCalendar(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,抛出 NullPointerException
toCalendar(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,抛出 NullPointerException
toCalendar(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,抛出 IllegalArgumentException
year==0
,那么什么都不做,返回 date
,参见 GregorianCalendar.add(int, int)
IllegalArgumentException
- 如果 date
是null
Calendar.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,抛出 IllegalArgumentException
month==0
,那么什么都不做,返回 date
,参见 GregorianCalendar.add(int, int)
IllegalArgumentException
- 如果 date
是null
Calendar.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,抛出 IllegalArgumentException
day==0
,那么什么都不做,返回 date
,参见 GregorianCalendar.add(int, int)
IllegalArgumentException
- 如果 date
是null
Calendar.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,抛出 IllegalArgumentException
week==0
,那么什么都不做,返回 date
,参见 GregorianCalendar.add(int, int)
IllegalArgumentException
- 如果 date
是null
DateUtils.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,抛出 IllegalArgumentException
hour==0
,那么什么都不做,返回 date
,参见 GregorianCalendar.add(int, int)
IllegalArgumentException
- 如果 date
是null
DateUtils.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,抛出 IllegalArgumentException
minute==0
,那么什么都不做,返回 date
,参见 GregorianCalendar.add(int, int)
IllegalArgumentException
- 如果 date
是null
DateUtils.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,抛出 IllegalArgumentException
second==0
,那么什么都不做,返回 date
,参见 GregorianCalendar.add(int, int)
IllegalArgumentException
- 如果 date
是null
DateUtils.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,抛出 IllegalArgumentException
millisecond==0
,那么什么都不做,返回 date
,参见 GregorianCalendar.add(int, int)
IllegalArgumentException
- 如果 date
是null
DateUtils.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,抛出 NullPointerException
CalendarUtil.getFieldValue(Date, int)
,
Calendar.YEAR
public static int getMonth(Date date)
date
中的月份 (已经+1处理).
DateUtil.getMonth(2012-06-29
) =6
date
- 任意时间date
是null,抛出 NullPointerException
CalendarUtil.getFieldValue(Date, int)
,
Calendar.MONTH
public 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,抛出 NullPointerException
CalendarUtil.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,抛出 NullPointerException
Calendar.DAY_OF_YEAR
public 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,抛出 NullPointerException
CalendarUtil.getFieldValue(Date, int)
,
Calendar.DAY_OF_MONTH
public static int getDayOfWeek(Date date)
date
在当前星期是星期几.
DateUtil.getDayOfWeek(2012-6-29) =6 是FRIDAY
星期5 DateUtil.getDayOfWeek(2016-08-16) =Calendar.TUESDAY
DateUtil.getDayOfWeek(2016-12-31) =Calendar.SATURDAY
DateUtil.getDayOfWeek(2016-02-01) =Calendar.MONDAY
date
- 任意时间date
是null,抛出 NullPointerException
Calendar.SUNDAY
,
Calendar.MONDAY
,
Calendar.TUESDAY
,
Calendar.WEDNESDAY
,
Calendar.THURSDAY
,
Calendar.FRIDAY
,
Calendar.SATURDAY
,
CalendarUtil.getFieldValue(Date, int)
,
Calendar.DAY_OF_WEEK
public 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,抛出 NullPointerException
public 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,抛出 NullPointerException
CalendarUtil.getFieldValue(Date, int)
,
Calendar.HOUR_OF_DAY
public static int getMinute(Date date)
date
中的分钟.
DateUtil.getMinute(2012-6-29 00:26:53) =26
date
- 任意时间date
是null,抛出 NullPointerException
CalendarUtil.getFieldValue(Date, int)
,
Calendar.MINUTE
public static int getSecond(Date date)
date
中的秒.
DateUtil.getSecond(2012-6-29 00:26:53) =53
date
- 任意时间date
是null,抛出 NullPointerException
CalendarUtil.getFieldValue(Date, int)
,
Calendar.SECOND
public static int getSecondOfDay(Date date)
date
在当天中的秒数,最大值86400.
DateUtil.getSecondOfDay(2013-09-09 16:42:41)= 60161
date
- 任意时间date
是null,抛出 NullPointerException
TimeInterval.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,抛出 NullPointerException
TimeInterval.SECONDS_PER_MINUTE
,
TimeInterval.SECONDS_PER_HOUR
public 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,抛出 NullPointerException
public 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
- 模式 DatePattern
date
是null,抛出 NullPointerException
pattern
是 null,抛出 NullPointerException
pattern
是 blank,抛出 IllegalArgumentException
DateFormatUtils.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
- 模式,时间字符串的模式DatePattern
dateString
是null,抛出 NullPointerException
dateString
是blank,抛出 IllegalArgumentException
datePatterns
是 null,抛出 NullPointerException
datePatterns
是 empty,抛出 IllegalArgumentException
datePatterns
有元素是 null,抛出 IllegalArgumentException
DateUtils.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,抛出 NullPointerException
date
是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,抛出 NullPointerException
DateUtils.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
- 格式 DatePattern
date1 == date2
直接返回truedate1
是null,抛出 NullPointerException
date2
是null,抛出 NullPointerException
pattern
是 null,抛出 NullPointerException
pattern
是 blank,抛出 IllegalArgumentException
toString(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