public class DateUtil extends CalendarUtil
java8日志工具类
,
日期常用格式工具类
Constructor and Description |
---|
DateUtil() |
Modifier and Type | Method and Description |
---|---|
static int |
age(Date birthday,
Date dateToCompare)
计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄
|
static int |
ageOfNow(Date birthDay)
生日转为年龄,计算法定年龄
|
static int |
ageOfNow(String birthDay)
生日转为年龄,计算法定年龄
|
static DateTime |
beginOfDay(Date date)
获取某天的开始时间
|
static DateTime |
beginOfHour(Date date)
获取某小时的开始时间
|
static DateTime |
beginOfMinute(Date date)
获取某分钟的开始时间
|
static DateTime |
beginOfMonth(Date date)
获取某月的开始时间
|
static DateTime |
beginOfQuarter(Date date)
获取某季度的开始时间
|
static DateTime |
beginOfSecond(Date date)
获取秒级别的开始时间,即毫秒部分设置为0
|
static DateTime |
beginOfWeek(Date date)
获取某周的开始时间,周一定为一周的开始时间
|
static DateTime |
beginOfWeek(Date date,
boolean isMondayAsFirstDay)
获取某周的开始时间
|
static DateTime |
beginOfYear(Date date)
获取某年的开始时间
|
static long |
between(Date beginDate,
Date endDate,
DateUnit unit)
判断两个日期相差的时长,只保留绝对值
|
static long |
between(Date beginDate,
Date endDate,
DateUnit unit,
boolean isAbs)
判断两个日期相差的时长
|
static long |
betweenDay(Date beginDate,
Date endDate,
boolean isReset)
判断两个日期相差的天数
有时候我们计算相差天数的时候需要忽略时分秒。 |
static long |
betweenMonth(Date beginDate,
Date endDate,
boolean isReset)
计算两个日期相差月数
在非重置情况下,如果起始日期的天大于结束日期的天,月数要少算1(不足1个月) |
static long |
betweenMs(Date beginDate,
Date endDate)
判断两个日期相差的毫秒数
|
static long |
betweenWeek(Date beginDate,
Date endDate,
boolean isReset)
计算指定时间区间内的周数
|
static long |
betweenYear(Date beginDate,
Date endDate,
boolean isReset)
计算两个日期相差年数
在非重置情况下,如果起始日期的月大于结束日期的月,年数要少算1(不足1年) |
static DateTime |
ceiling(Date date,
DateField dateField)
修改日期为某个时间字段结束时间
|
static DateTime |
ceiling(Date date,
DateField dateField,
boolean truncateMillisecond)
修改日期为某个时间字段结束时间
可选是否归零毫秒。 |
static int |
compare(Date date1,
Date date2)
null 安全的日期比较,null 对象排在末尾 |
static int |
compare(Date date1,
Date date2,
String format)
null 安全的日期比较,并只比较指定格式; null 对象排在末尾, 并指定日期格式; |
static DateTime |
convertTimeZone(Date date,
TimeZone timeZone)
Date 转换时区 |
static DateTime |
convertTimeZone(Date date,
ZoneId zoneId)
Date 转换时区 |
static StopWatch |
createStopWatch()
创建秒表
StopWatch ,用于对代码块的执行时间计数
使用方法如下:
StopWatch stopWatch = DateUtil.createStopWatch();
// 任务1
stopWatch.start("任务一");
Thread.sleep(1000);
stopWatch.stop();
// 任务2
stopWatch.start("任务二");
Thread.sleep(2000);
stopWatch.stop();
// 打印出耗时
Console.log(stopWatch.prettyPrint());
|
static StopWatch |
createStopWatch(String id)
创建秒表
StopWatch ,用于对代码块的执行时间计数
使用方法如下:
StopWatch stopWatch = DateUtil.createStopWatch("任务名称");
// 任务1
stopWatch.start("任务一");
Thread.sleep(1000);
stopWatch.stop();
// 任务2
stopWatch.start("任务二");
Thread.sleep(2000);
stopWatch.stop();
// 打印出耗时
Console.log(stopWatch.prettyPrint());
|
static long |
current()
当前时间的时间戳
|
static long |
currentSeconds()
当前时间的时间戳(秒)
|
static DateTime |
date()
当前时间,转换为
DateTime 对象 |
static DateTime |
date(Calendar calendar)
|
static DateTime |
date(Date date)
|
static DateTime |
date(long date)
Long类型时间转为
DateTime 只支持毫秒级别时间戳,如果需要秒级别时间戳,请自行×1000 |
static DateTime |
date(TemporalAccessor temporalAccessor)
|
static DateTime |
dateNew(Date date)
|
static DateTime |
dateSecond()
当前时间,转换为
DateTime 对象,忽略毫秒部分 |
static int |
dayOfMonth(Date date)
获得指定日期是这个日期所在月份的第几天
|
static int |
dayOfWeek(Date date)
获得指定日期是星期几,1表示周日,2表示周一
|
static Week |
dayOfWeekEnum(Date date)
获得指定日期是星期几
|
static int |
dayOfYear(Date date)
获得指定日期是这个日期所在年的第几天
|
static DateTime |
endOfDay(Date date)
获取某天的结束时间
|
static DateTime |
endOfHour(Date date)
获取某小时的结束时间
|
static DateTime |
endOfMinute(Date date)
获取某分钟的结束时间
|
static DateTime |
endOfMonth(Date date)
获取某月的结束时间
|
static DateTime |
endOfQuarter(Date date)
获取某季度的结束时间
|
static DateTime |
endOfSecond(Date date)
获取秒级别的结束时间,即毫秒设置为999
|
static DateTime |
endOfWeek(Date date)
获取某周的结束时间,周日定为一周的结束
|
static DateTime |
endOfWeek(Date date,
boolean isSundayAsLastDay)
获取某周的结束时间
|
static DateTime |
endOfYear(Date date)
获取某年的结束时间
|
static String |
format(Date date,
DateFormat format)
根据特定格式格式化日期
|
static String |
format(Date date,
DatePrinter format)
根据特定格式格式化日期
|
static String |
format(Date date,
DateTimeFormatter format)
根据特定格式格式化日期
|
static String |
format(Date date,
String format)
根据特定格式格式化日期
|
static String |
format(LocalDateTime localDateTime,
String format)
根据特定格式格式化日期
|
static String |
formatBetween(Date beginDate,
Date endDate)
格式化日期间隔输出,精确到毫秒
|
static String |
formatBetween(Date beginDate,
Date endDate,
BetweenFormatter.Level level)
格式化日期间隔输出
|
static String |
formatBetween(long betweenMs)
格式化日期间隔输出,精确到毫秒
|
static String |
formatBetween(long betweenMs,
BetweenFormatter.Level level)
格式化日期间隔输出
|
static String |
formatChineseDate(Date date,
boolean isUppercase,
boolean withTime)
格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日,否则返回二〇一八年十月二十四日
|
static String |
formatDate(Date date)
格式化日期部分(不包括时间)
格式 yyyy-MM-dd |
static String |
formatDateTime(Date date)
格式化日期时间
格式 yyyy-MM-dd HH:mm:ss |
static String |
formatHttpDate(Date date)
格式化为Http的标准日期格式
标准日期格式遵循RFC 1123规范,格式类似于:Fri, 31 Dec 1999 23:59:59 GMT |
static String |
formatLocalDateTime(LocalDateTime localDateTime)
格式化日期时间
格式 yyyy-MM-dd HH:mm:ss |
static String |
formatTime(Date date)
格式化时间
格式 HH:mm:ss |
static String |
getChineseZodiac(int year)
计算生肖,只计算1900年后出生的人
|
static int |
getLastDayOfMonth(Date date)
获得本月的最后一天
|
static String |
getShotName(TimeUnit unit)
获取时长单位简写
|
static String |
getZodiac(int month,
int day)
通过生日计算星座
|
static int |
hour(Date date,
boolean is24HourClock)
获得指定日期的小时数部分
|
static boolean |
isAM(Date date)
是否为上午
|
static boolean |
isExpired(Date startDate,
Date endDate,
Date checkDate)
Deprecated.
使用isIn方法
|
static boolean |
isExpired(Date startDate,
DateField dateField,
int timeLength,
Date endDate)
Deprecated.
此方法存在一定的歧义,容易产生误导,废弃。
|
static boolean |
isIn(Date date,
Date beginDate,
Date endDate)
当前日期是否在日期指定范围内
起始日期和结束日期可以互换 |
static boolean |
isLastDayOfMonth(Date date)
是否为本月最后一天
|
static boolean |
isLeapYear(int year)
是否闰年
|
static boolean |
isOverlap(Date realStartTime,
Date realEndTime,
Date startTime,
Date endTime)
检查两个时间段是否有时间重叠
重叠指两个时间段是否有交集,注意此方法时间段重合时如: 此方法未纠正开始时间小于结束时间 当realStartTime和realEndTime或startTime和endTime相等时,退化为判断区间是否包含点 当realStartTime和realEndTime和startTime和endTime相等时,退化为判断点与点是否相等 See 准确的区间关系参考:艾伦区间代数 |
static boolean |
isPM(Date date)
是否为下午
|
static boolean |
isSameDay(Date date1,
Date date2)
比较两个日期是否为同一天
|
static boolean |
isSameMonth(Date date1,
Date date2)
比较两个日期是否为同一月
|
static boolean |
isSameTime(Date date1,
Date date2)
是否为相同时间
此方法比较两个日期的时间戳是否相同 |
static boolean |
isSameWeek(Date date1,
Date date2,
boolean isMon)
比较两个日期是否为同一周
|
static boolean |
isWeekend(Date date)
是否为周末(周六或周日)
|
static DateTime |
lastMonth()
上个月
|
static DateTime |
lastWeek()
上周
|
static int |
lengthOfMonth(int month,
boolean isLeapYear)
获得指定月份的总天数
|
static int |
lengthOfYear(int year)
获得指定年份的总天数
|
static int |
millisecond(Date date)
获得指定日期的毫秒数部分
|
static int |
minute(Date date)
获得指定日期的分钟数部分
例如:10:04:15.250 =》 4 |
static int |
month(Date date)
获得月份,从0开始计数
|
static Month |
monthEnum(Date date)
获得月份
|
static long |
nanosToMillis(long duration)
纳秒转毫秒
|
static double |
nanosToSeconds(long duration)
纳秒转秒,保留小数
|
static SimpleDateFormat |
newSimpleFormat(String pattern)
创建
SimpleDateFormat ,注意此对象非线程安全! |
static SimpleDateFormat |
newSimpleFormat(String pattern,
Locale locale,
TimeZone timeZone)
创建
SimpleDateFormat ,注意此对象非线程安全! |
static DateTime |
nextMonth()
下个月
|
static DateTime |
nextWeek()
下周
|
static String |
now()
当前时间,格式 yyyy-MM-dd HH:mm:ss
|
static DateTime |
offset(Date date,
DateField dateField,
int offset)
获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期
|
static DateTime |
offsetDay(Date date,
int offset)
w
偏移天
|
static DateTime |
offsetHour(Date date,
int offset)
偏移小时
|
static DateTime |
offsetMillisecond(Date date,
int offset)
偏移毫秒数
|
static DateTime |
offsetMinute(Date date,
int offset)
偏移分钟
|
static DateTime |
offsetMonth(Date date,
int offset)
偏移月
|
static DateTime |
offsetSecond(Date date,
int offset)
偏移秒数
|
static DateTime |
offsetWeek(Date date,
int offset)
偏移周
|
static DateTime |
offsetYear(Date date,
int offset)
偏移年
|
static DateTime |
parse(CharSequence dateCharSequence)
将日期字符串转换为
DateTime 对象,格式:yyyy-MM-dd HH:mm:ss yyyy/MM/dd HH:mm:ss yyyy.MM.dd HH:mm:ss yyyy年MM月dd日 HH时mm分ss秒 yyyy-MM-dd yyyy/MM/dd yyyy.MM.dd HH:mm:ss HH时mm分ss秒 yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss.SSS yyyy-MM-dd HH:mm:ss.SSSSSS yyyyMMddHHmmss yyyyMMddHHmmssSSS yyyyMMdd EEE, dd MMM yyyy HH:mm:ss z EEE MMM dd HH:mm:ss zzz yyyy yyyy-MM-dd'T'HH:mm:ss'Z' yyyy-MM-dd'T'HH:mm:ss.SSS'Z' yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd'T'HH:mm:ss.SSSZ |
static DateTime |
parse(CharSequence dateStr,
DateFormat dateFormat)
构建DateTime对象
|
static DateTime |
parse(CharSequence dateStr,
DateParser parser)
构建DateTime对象
|
static DateTime |
parse(CharSequence dateStr,
DateParser parser,
boolean lenient)
构建DateTime对象
|
static DateTime |
parse(CharSequence dateStr,
DateTimeFormatter formatter)
构建DateTime对象
|
static DateTime |
parse(CharSequence dateStr,
String format)
将特定格式的日期转换为Date对象
|
static DateTime |
parse(CharSequence dateStr,
String format,
Locale locale)
将特定格式的日期转换为Date对象
|
static DateTime |
parse(String str,
String... parsePatterns)
通过给定的日期格式解析日期时间字符串。
|
static DateTime |
parseCST(CharSequence cstString)
Deprecated.
理解错误,请使用
parseRFC2822(CharSequence) |
static DateTime |
parseDate(CharSequence dateString)
解析日期字符串,忽略时分秒,支持的格式包括:
yyyy-MM-dd
yyyy/MM/dd
yyyy.MM.dd
yyyy年MM月dd日
|
static DateTime |
parseDateTime(CharSequence dateString)
解析日期时间字符串,格式支持:
yyyy-MM-dd HH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy.MM.dd HH:mm:ss
yyyy年MM月dd日 HH:mm:ss
|
static LocalDateTime |
parseLocalDateTime(CharSequence dateStr)
构建LocalDateTime对象
格式:yyyy-MM-dd HH:mm:ss |
static LocalDateTime |
parseLocalDateTime(CharSequence dateStr,
String format)
构建LocalDateTime对象
|
static DateTime |
parseRFC2822(CharSequence source)
解析RFC2822时间,格式:
EEE MMM dd HH:mm:ss z yyyy(例如:Wed Aug 01 00:00:00 CST 2012) |
static DateTime |
parseTime(CharSequence timeString)
解析时间,格式HH:mm:ss,日期部分默认为1970-01-01
|
static DateTime |
parseTimeToday(CharSequence timeString)
解析时间,格式HH:mm 或 HH:mm:ss,日期默认为今天
|
static DateTime |
parseUTC(String utcString)
解析UTC时间,格式:
yyyy-MM-dd'T'HH:mm:ss'Z' yyyy-MM-dd'T'HH:mm:ss.SSS'Z' yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd'T'HH:mm:ss.SSSZ yyyy-MM-dd'T'HH:mm:ss+0800 yyyy-MM-dd'T'HH:mm:ss+08:00 |
static int |
quarter(Date date)
获得指定日期所属季度,从1开始计数
|
static Quarter |
quarterEnum(Date date)
获得指定日期所属季度
|
static DateRange |
range(Date start,
Date end,
DateField unit)
创建日期范围生成器
|
static void |
rangeConsume(Date start,
Date end,
DateField unit,
Consumer<Date> consumer)
按日期范围遍历,执行 consumer
|
static List<DateTime> |
rangeContains(DateRange start,
DateRange end)
俩个时间区间取交集
|
static <T> List<T> |
rangeFunc(Date start,
Date end,
DateField unit,
Function<Date,T> func)
按日期范围遍历,执行 function
|
static List<DateTime> |
rangeNotContains(DateRange start,
DateRange end)
俩个时间区间取差集(end - start)
|
static List<DateTime> |
rangeToList(Date start,
Date end,
DateField unit)
根据步进单位获取起始日期时间和结束日期时间的时间区间集合
|
static List<DateTime> |
rangeToList(Date start,
Date end,
DateField unit,
int step)
根据步进单位和步进获取起始日期时间和结束日期时间的时间区间集合
|
static DateTime |
round(Date date,
DateField dateField)
修改日期为某个时间字段四舍五入时间
|
static int |
second(Date date)
获得指定日期的秒数部分
|
static String |
secondToTime(int seconds)
秒数转为时间格式(HH:mm:ss)
参考:https://github.com/iceroot |
static long |
spendMs(long preTime)
计时,常用于记录某段代码的执行时间,单位:毫秒
|
static long |
spendNt(long preTime)
计时,常用于记录某段代码的执行时间,单位:纳秒
|
static int |
thisDayOfMonth() |
static int |
thisDayOfWeek() |
static Week |
thisDayOfWeekEnum() |
static int |
thisHour(boolean is24HourClock) |
static int |
thisMillisecond() |
static int |
thisMinute() |
static int |
thisMonth() |
static Month |
thisMonthEnum() |
static int |
thisSecond() |
static int |
thisWeekOfMonth() |
static int |
thisWeekOfYear() |
static int |
thisYear() |
static TimeInterval |
timer()
计时器
计算某个过程花费的时间,精确到毫秒 |
static TimeInterval |
timer(boolean isNano)
计时器
计算某个过程花费的时间,精确到毫秒 |
static int |
timeToSecond(String timeStr)
HH:mm:ss 时间格式字符串转为秒数
参考:https://github.com/iceroot |
static String |
today()
当前日期,格式 yyyy-MM-dd
|
static Instant |
toInstant(Date date)
Date对象转换为
Instant 对象 |
static Instant |
toInstant(TemporalAccessor temporalAccessor)
Date对象转换为
Instant 对象 |
static int |
toIntSecond(Date date)
Deprecated.
2022年后结果溢出,此方法废弃
|
static LocalDateTime |
toLocalDateTime(Date date)
Date 转换为 LocalDateTime ,使用系统默认时区 |
static LocalDateTime |
toLocalDateTime(Instant instant)
Instant 转换为 LocalDateTime ,使用系统默认时区 |
static DateTime |
tomorrow()
明天
|
static DateTime |
truncate(Date date,
DateField dateField)
修改日期为某个时间字段起始时间
|
static int |
weekOfMonth(Date date)
获得指定日期是所在月份的第几周
|
static int |
weekOfYear(Date date)
获得指定日期是所在年份的第几周
此方法返回值与一周的第一天有关,比如: 2016年1月3日为周日,如果一周的第一天为周日,那这天是第二周(返回2) 如果一周的第一天为周一,那这天是第一周(返回1) 跨年的那个星期得到的结果总是1 |
static int |
year(Date date)
获得年的部分
|
static String |
yearAndQuarter(Date date)
获得指定日期年份和季节
格式:[20131]表示2013年第一季度 |
static LinkedHashSet<String> |
yearAndQuarter(Date startDate,
Date endDate)
获得指定日期区间内的年份和季节
|
static DateTime |
yesterday()
昨天
|
age, age, beginOfDay, beginOfHour, beginOfMinute, beginOfMonth, beginOfQuarter, beginOfSecond, beginOfWeek, beginOfWeek, beginOfYear, calendar, calendar, calendar, calendar, ceiling, ceiling, compare, endOfDay, endOfHour, endOfMinute, endOfMonth, endOfQuarter, endOfSecond, endOfWeek, endOfWeek, endOfYear, formatChineseDate, getBeginValue, getBeginValue, getEndValue, getEndValue, isAM, isLastDayOfMonth, isPM, isSameDay, isSameInstant, isSameMonth, isSameWeek, parse, parseByPatterns, parseByPatterns, parseByPatterns, round, toInstant, toLocalDateTime, truncate, yearAndQuarter, yearAndQuarter
public static DateTime date(Date date)
date
- Long类型Date(Unix时间戳),如果传入null
,返回null
public static DateTime dateNew(Date date)
date
- Date对象,如果传入null
,返回null
DateTime
对象public static DateTime date(long date)
DateTime
date
- Long类型Date(Unix时间戳)public static DateTime date(Calendar calendar)
calendar
- Calendar
,如果传入null
,返回null
public static DateTime date(TemporalAccessor temporalAccessor)
temporalAccessor
- TemporalAccessor
,常用子类: LocalDateTime
、 LocalDate,如果传入null
,返回null
public static long current()
public static long currentSeconds()
public static String now()
public static String today()
public static int year(Date date)
date
- 日期public static int quarter(Date date)
date
- 日期public static Quarter quarterEnum(Date date)
date
- 日期public static int month(Date date)
date
- 日期public static int weekOfYear(Date date)
date
- 日期DateTime.setFirstDayOfWeek(Week)
public static int weekOfMonth(Date date)
date
- 日期public static int dayOfMonth(Date date)
date
- 日期public static int dayOfYear(Date date)
date
- 日期public static int dayOfWeek(Date date)
date
- 日期public static Week dayOfWeekEnum(Date date)
date
- 日期Week
public static boolean isWeekend(Date date)
date
- 判定的日期Date
public static int hour(Date date, boolean is24HourClock)
date
- 日期is24HourClock
- 是否24小时制public static int minute(Date date)
date
- 日期public static int second(Date date)
date
- 日期public static int millisecond(Date date)
date
- 日期public static boolean isAM(Date date)
date
- 日期public static boolean isPM(Date date)
date
- 日期public static int thisYear()
public static int thisMonth()
public static int thisWeekOfYear()
public static int thisWeekOfMonth()
public static int thisDayOfMonth()
public static int thisDayOfWeek()
public static int thisHour(boolean is24HourClock)
is24HourClock
- 是否24小时制public static int thisMinute()
public static int thisSecond()
public static int thisMillisecond()
public static String yearAndQuarter(Date date)
date
- 日期public static LinkedHashSet<String> yearAndQuarter(Date startDate, Date endDate)
startDate
- 起始日期(包含)endDate
- 结束日期(包含)public static String formatLocalDateTime(LocalDateTime localDateTime)
localDateTime
- 被格式化的日期public static String format(LocalDateTime localDateTime, String format)
localDateTime
- 被格式化的日期format
- 日期格式,常用格式见: DatePattern
public static String format(Date date, String format)
date
- 被格式化的日期format
- 日期格式,常用格式见: DatePattern
DatePattern.NORM_DATETIME_PATTERN
public static String format(Date date, DatePrinter format)
date
- 被格式化的日期format
- DatePrinter
或 FastDateFormat
DatePattern.NORM_DATETIME_FORMAT
public static String format(Date date, DateFormat format)
date
- 被格式化的日期format
- SimpleDateFormat
public static String format(Date date, DateTimeFormatter format)
date
- 被格式化的日期format
- SimpleDateFormat
DatePattern.NORM_DATETIME_FORMATTER
public static String formatDateTime(Date date)
date
- 被格式化的日期public static String formatDate(Date date)
date
- 被格式化的日期public static String formatTime(Date date)
date
- 被格式化的日期public static String formatHttpDate(Date date)
date
- 被格式化的日期public static String formatChineseDate(Date date, boolean isUppercase, boolean withTime)
date
- 被格式化的日期isUppercase
- 是否采用大写形式withTime
- 是否包含时间部分public static LocalDateTime parseLocalDateTime(CharSequence dateStr)
dateStr
- 时间字符串(带格式)public static LocalDateTime parseLocalDateTime(CharSequence dateStr, String format)
dateStr
- 时间字符串(带格式)format
- 使用DatePattern
定义的格式public static DateTime parse(CharSequence dateStr, DateFormat dateFormat)
dateStr
- Date字符串dateFormat
- 格式化器 SimpleDateFormat
public static DateTime parse(CharSequence dateStr, DateParser parser)
dateStr
- Date字符串parser
- 格式化器,FastDateFormat
public static DateTime parse(CharSequence dateStr, DateParser parser, boolean lenient)
dateStr
- Date字符串parser
- 格式化器,FastDateFormat
lenient
- 是否宽容模式public static DateTime parse(CharSequence dateStr, DateTimeFormatter formatter)
dateStr
- Date字符串formatter
- 格式化器,DateTimeFormatter
public static DateTime parse(CharSequence dateStr, String format)
dateStr
- 特定格式的日期format
- 格式,例如yyyy-MM-ddpublic static DateTime parse(CharSequence dateStr, String format, Locale locale)
dateStr
- 特定格式的日期format
- 格式,例如yyyy-MM-ddlocale
- 区域信息public static DateTime parse(String str, String... parsePatterns) throws DateException
str
- 日期时间字符串,非空parsePatterns
- 需要尝试的日期时间格式数组,非空, 见SimpleDateFormatIllegalArgumentException
- if the date string or pattern array is nullDateException
- if none of the date patterns were suitablepublic static DateTime parseDateTime(CharSequence dateString)
yyyy-MM-dd HH:mm:ss yyyy/MM/dd HH:mm:ss yyyy.MM.dd HH:mm:ss yyyy年MM月dd日 HH:mm:ss
dateString
- 标准形式的时间字符串public static DateTime parseDate(CharSequence dateString)
yyyy-MM-dd yyyy/MM/dd yyyy.MM.dd yyyy年MM月dd日
dateString
- 标准形式的日期字符串public static DateTime parseTime(CharSequence timeString)
timeString
- 标准形式的日期字符串public static DateTime parseTimeToday(CharSequence timeString)
timeString
- 标准形式的日期字符串public static DateTime parseUTC(String utcString)
utcString
- UTC时间@Deprecated public static DateTime parseCST(CharSequence cstString)
parseRFC2822(CharSequence)
cstString
- UTC时间public static DateTime parseRFC2822(CharSequence source)
source
- RFC2822时间public static DateTime parse(CharSequence dateCharSequence)
DateTime
对象,格式:dateCharSequence
- 日期字符串public static DateTime truncate(Date date, DateField dateField)
date
- Date
dateField
- 保留到的时间字段,如定义为 DateField.SECOND
,表示这个字段不变,这个字段以下字段全部归0DateTime
public static DateTime ceiling(Date date, DateField dateField)
date
- Date
dateField
- 保留到的时间字段,如定义为 DateField.SECOND
,表示这个字段不变,这个字段以下字段全部取最大值DateTime
public static DateTime ceiling(Date date, DateField dateField, boolean truncateMillisecond)
有时候由于毫秒部分必须为0(如MySQL数据库中),因此在此加上选项。
public static DateTime beginOfSecond(Date date)
date
- 日期DateTime
public static DateTime endOfSecond(Date date)
date
- 日期DateTime
public static DateTime beginOfHour(Date date)
date
- 日期DateTime
public static DateTime endOfHour(Date date)
date
- 日期DateTime
public static DateTime beginOfMinute(Date date)
date
- 日期DateTime
public static DateTime endOfMinute(Date date)
date
- 日期DateTime
public static DateTime beginOfDay(Date date)
date
- 日期DateTime
public static DateTime endOfDay(Date date)
date
- 日期DateTime
public static DateTime beginOfWeek(Date date)
date
- 日期DateTime
public static DateTime beginOfWeek(Date date, boolean isMondayAsFirstDay)
date
- 日期isMondayAsFirstDay
- 是否周一做为一周的第一天(false表示周日做为第一天)DateTime
public static DateTime endOfWeek(Date date)
date
- 日期DateTime
public static DateTime endOfWeek(Date date, boolean isSundayAsLastDay)
date
- 日期isSundayAsLastDay
- 是否周日做为一周的最后一天(false表示周六做为最后一天)DateTime
public static DateTime beginOfMonth(Date date)
date
- 日期DateTime
public static DateTime endOfMonth(Date date)
date
- 日期DateTime
public static DateTime beginOfQuarter(Date date)
date
- 日期DateTime
public static DateTime endOfQuarter(Date date)
date
- 日期DateTime
public static DateTime beginOfYear(Date date)
date
- 日期DateTime
public static DateTime endOfYear(Date date)
date
- 日期DateTime
public static DateTime yesterday()
public static DateTime tomorrow()
public static DateTime lastWeek()
public static DateTime nextWeek()
public static DateTime lastMonth()
public static DateTime nextMonth()
public static DateTime offsetMillisecond(Date date, int offset)
date
- 日期offset
- 偏移毫秒数,正数向未来偏移,负数向历史偏移public static DateTime offsetSecond(Date date, int offset)
date
- 日期offset
- 偏移秒数,正数向未来偏移,负数向历史偏移public static DateTime offsetMinute(Date date, int offset)
date
- 日期offset
- 偏移分钟数,正数向未来偏移,负数向历史偏移public static DateTime offsetHour(Date date, int offset)
date
- 日期offset
- 偏移小时数,正数向未来偏移,负数向历史偏移public static DateTime offsetDay(Date date, int offset)
date
- 日期offset
- 偏移天数,正数向未来偏移,负数向历史偏移public static DateTime offsetWeek(Date date, int offset)
date
- 日期offset
- 偏移周数,正数向未来偏移,负数向历史偏移public static DateTime offsetMonth(Date date, int offset)
date
- 日期offset
- 偏移月数,正数向未来偏移,负数向历史偏移public static DateTime offsetYear(Date date, int offset)
date
- 日期offset
- 偏移年数,正数向未来偏移,负数向历史偏移public static DateTime offset(Date date, DateField dateField, int offset)
date
- 基准日期dateField
- 偏移的粒度大小(小时、天、月等)DateField
offset
- 偏移量,正数为向后偏移,负数为向前偏移public static long between(Date beginDate, Date endDate, DateUnit unit)
beginDate
- 起始日期endDate
- 结束日期unit
- 相差的单位:相差 天DateUnit.DAY
、小时DateUnit.HOUR
等public static long between(Date beginDate, Date endDate, DateUnit unit, boolean isAbs)
beginDate
- 起始日期endDate
- 结束日期unit
- 相差的单位:相差 天DateUnit.DAY
、小时DateUnit.HOUR
等isAbs
- 日期间隔是否只保留绝对值正数public static long betweenMs(Date beginDate, Date endDate)
beginDate
- 起始日期endDate
- 结束日期public static long betweenDay(Date beginDate, Date endDate, boolean isReset)
有时候我们计算相差天数的时候需要忽略时分秒。 比如:2016-02-01 23:59:59和2016-02-02 00:00:00相差一秒 如果isReset为false
相差天数为0。 如果isReset为true
相差天数将被计算为1
beginDate
- 起始日期endDate
- 结束日期isReset
- 是否重置时间为起始时间public static long betweenWeek(Date beginDate, Date endDate, boolean isReset)
beginDate
- 开始时间endDate
- 结束时间isReset
- 是否重置时间为起始时间public static long betweenMonth(Date beginDate, Date endDate, boolean isReset)
beginDate
- 起始日期endDate
- 结束日期isReset
- 是否重置时间为起始时间(重置天时分秒)public static long betweenYear(Date beginDate, Date endDate, boolean isReset)
beginDate
- 起始日期endDate
- 结束日期isReset
- 是否重置时间为起始时间(重置月天时分秒)public static String formatBetween(Date beginDate, Date endDate, BetweenFormatter.Level level)
beginDate
- 起始日期endDate
- 结束日期level
- 级别,按照天、小时、分、秒、毫秒分为5个等级public static String formatBetween(Date beginDate, Date endDate)
beginDate
- 起始日期endDate
- 结束日期public static String formatBetween(long betweenMs, BetweenFormatter.Level level)
betweenMs
- 日期间隔level
- 级别,按照天、小时、分、秒、毫秒分为5个等级public static String formatBetween(long betweenMs)
betweenMs
- 日期间隔public static boolean isIn(Date date, Date beginDate, Date endDate)
date
- 被检查的日期beginDate
- 起始日期(包含)endDate
- 结束日期(包含)public static boolean isSameTime(Date date1, Date date2)
date1
- 日期1date2
- 日期2public static boolean isSameDay(Date date1, Date date2)
date1
- 日期1date2
- 日期2public static boolean isSameWeek(Date date1, Date date2, boolean isMon)
date1
- 日期1date2
- 日期2isMon
- 是否为周一。国内第一天为星期一,国外第一天为星期日public static boolean isSameMonth(Date date1, Date date2)
date1
- 日期1date2
- 日期2public static long spendNt(long preTime)
preTime
- 之前记录的时间public static long spendMs(long preTime)
preTime
- 之前记录的时间@Deprecated public static int toIntSecond(Date date)
date
- 日期public static TimeInterval timer()
public static TimeInterval timer(boolean isNano)
isNano
- 是否使用纳秒计数,false则使用毫秒public static StopWatch createStopWatch()
StopWatch
,用于对代码块的执行时间计数
使用方法如下:
StopWatch stopWatch = DateUtil.createStopWatch(); // 任务1 stopWatch.start("任务一"); Thread.sleep(1000); stopWatch.stop(); // 任务2 stopWatch.start("任务二"); Thread.sleep(2000); stopWatch.stop(); // 打印出耗时 Console.log(stopWatch.prettyPrint());
StopWatch
public static StopWatch createStopWatch(String id)
StopWatch
,用于对代码块的执行时间计数
使用方法如下:
StopWatch stopWatch = DateUtil.createStopWatch("任务名称"); // 任务1 stopWatch.start("任务一"); Thread.sleep(1000); stopWatch.stop(); // 任务2 stopWatch.start("任务二"); Thread.sleep(2000); stopWatch.stop(); // 打印出耗时 Console.log(stopWatch.prettyPrint());
id
- 用于标识秒表的唯一IDStopWatch
public static int ageOfNow(String birthDay)
birthDay
- 生日,标准日期字符串public static int ageOfNow(Date birthDay)
birthDay
- 生日public static boolean isLeapYear(int year)
year
- 年public static int age(Date birthday, Date dateToCompare)
birthday
- 生日dateToCompare
- 需要对比的日期@Deprecated public static boolean isExpired(Date startDate, DateField dateField, int timeLength, Date endDate)
startDate
- 开始时间dateField
- 时间单位timeLength
- 实际经过时长endDate
- 被比较的时间,即有效期的截止时间。如果经过时长后的时间晚于截止时间,就表示过期@Deprecated public static boolean isExpired(Date startDate, Date endDate, Date checkDate)
以商品为例,startDate即生产日期,endDate即保质期的截止日期,checkDate表示在何时检查是否过期(一般为当前时间)
endDate和startDate的差值即为保质期(按照毫秒计),checkDate和startDate的差值即为实际经过的时长,实际时长大于保质期表示超时。
startDate
- 开始时间endDate
- 被比较的时间,即有效期的截止时间。如果经过时长后的时间晚于被检查的时间,就表示过期checkDate
- 检查时间,可以是当前时间,既public static int timeToSecond(String timeStr)
timeStr
- 字符串时分秒(HH:mm:ss)格式public static String secondToTime(int seconds)
seconds
- 需要转换的秒数public static DateRange range(Date start, Date end, DateField unit)
start
- 起始日期时间(包括)end
- 结束日期时间unit
- 步进单位DateRange
public static List<DateTime> rangeContains(DateRange start, DateRange end)
start
- 开始区间end
- 结束区间public static List<DateTime> rangeNotContains(DateRange start, DateRange end)
start
- 开始区间end
- 结束区间public static <T> List<T> rangeFunc(Date start, Date end, DateField unit, Function<Date,T> func)
T
- Date经过函数处理结果类型start
- 起始日期时间(包括)end
- 结束日期时间unit
- 步进单位func
- 每次遍历要执行的 functionpublic static void rangeConsume(Date start, Date end, DateField unit, Consumer<Date> consumer)
start
- 起始日期时间(包括)end
- 结束日期时间unit
- 步进单位consumer
- 每次遍历要执行的 consumerpublic static List<DateTime> rangeToList(Date start, Date end, DateField unit)
start
- 起始日期时间end
- 结束日期时间unit
- 步进单位DateRange
public static List<DateTime> rangeToList(Date start, Date end, DateField unit, int step)
start
- 起始日期时间end
- 结束日期时间unit
- 步进单位step
- 步进DateRange
public static String getZodiac(int month, int day)
month
- 月,从0开始计数day
- 天public static String getChineseZodiac(int year)
year
- 农历年public static int compare(Date date1, Date date2)
null
安全的日期比较,null
对象排在末尾date1
- 日期1date2
- 日期2public static int compare(Date date1, Date date2, String format)
null
安全的日期比较,并只比较指定格式; null
对象排在末尾, 并指定日期格式;date1
- 日期1date2
- 日期2format
- 日期格式,常用格式见: DatePattern
; 允许为空; date1 date2; eg: yyyy-MM-ddpublic static long nanosToMillis(long duration)
duration
- 时长public static double nanosToSeconds(long duration)
duration
- 时长public static Instant toInstant(Date date)
Instant
对象date
- Date对象Instant
对象public static Instant toInstant(TemporalAccessor temporalAccessor)
Instant
对象temporalAccessor
- Date对象Instant
对象public static LocalDateTime toLocalDateTime(Instant instant)
Instant
转换为 LocalDateTime
,使用系统默认时区instant
- Instant
LocalDateTime
LocalDateTimeUtil.of(Instant)
public static LocalDateTime toLocalDateTime(Date date)
Date
转换为 LocalDateTime
,使用系统默认时区date
- Date
LocalDateTime
LocalDateTimeUtil.of(Date)
public static int lengthOfYear(int year)
year
- 年份public static int lengthOfMonth(int month, boolean isLeapYear)
month
- 月份isLeapYear
- 是否闰年public static SimpleDateFormat newSimpleFormat(String pattern)
SimpleDateFormat
,注意此对象非线程安全!pattern
- 表达式SimpleDateFormat
public static SimpleDateFormat newSimpleFormat(String pattern, Locale locale, TimeZone timeZone)
SimpleDateFormat
,注意此对象非线程安全!pattern
- 表达式locale
- Locale
,null
表示默认timeZone
- TimeZone
,null
表示默认SimpleDateFormat
public static String getShotName(TimeUnit unit)
unit
- 单位public static boolean isOverlap(Date realStartTime, Date realEndTime, Date startTime, Date endTime)
realStartTime
- 第一个时间段的开始时间realEndTime
- 第一个时间段的结束时间startTime
- 第二个时间段的开始时间endTime
- 第二个时间段的结束时间public static boolean isLastDayOfMonth(Date date)
date
- Date
Copyright © 2024. All rights reserved.