Package org.miaixz.bus.core.xyz
Class DateKit
日期时间工具类
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classjava.sql.*日期时间相关封装 考虑到JDK9+模块化后,java.sql并非默认引入模块,因此将相关内容单独封装为工具,避免类找不到问题。 -
Field Summary
Fields inherited from class org.miaixz.bus.core.center.date.Formatter
CN_DATE_FORMAT, CN_DATE_FORMATTER, CN_DATE_TIME_FORMAT, CN_DATE_TIME_FORMATTER, CN_MONTH_FORMAT, CN_MONTH_FORMATTER, HTTP_DATETIME_FORMAT, HTTP_DATETIME_FORMAT_GMT, ISO8601_FORMAT, ISO8601_MS_FORMAT, ISO8601_MS_WITH_XXX_OFFSET_FORMAT, ISO8601_MS_WITH_ZONE_OFFSET_FORMAT, ISO8601_WITH_XXX_OFFSET_FORMAT, ISO8601_WITH_ZONE_OFFSET_FORMAT, JDK_DATETIME_FORMAT, MAX_HMS, NORM_DATE_FORMAT, NORM_DATE_FORMATTER, NORM_DATETIME_COMMA_MS_FORMAT, NORM_DATETIME_COMMA_MS_FORMATTER, NORM_DATETIME_FORMAT, NORM_DATETIME_FORMATTER, NORM_DATETIME_MINUTE_FORMAT, NORM_DATETIME_MINUTE_FORMATTER, NORM_DATETIME_MS_FORMAT, NORM_DATETIME_MS_FORMATTER, NORM_HOUR_MINUTE_FORMAT, NORM_HOUR_MINUTE_FORMATTER, NORM_MONTH_FORMAT, NORM_MONTH_FORMATTER, NORM_TIME_FORMAT, NORM_TIME_FORMATTER, PPURE_HOUR_MINUTE_FORMAT, PURE_DATE_FORMAT, PURE_DATE_FORMATTER, PURE_DATETIME_FORMAT, PURE_DATETIME_FORMATTER, PURE_DATETIME_MS_FORMAT, PURE_DATETIME_MS_FORMATTER, PURE_DATETIME_TIP_FORMAT, PURE_HOUR_MINUTE_FORMATTER, PURE_TIME_FORMAT, PURE_TIME_FORMATTER, SIMPLE_MONTH_FORMAT, SIMPLE_MONTH_FORMATTER, UTC_FORMAT, UTC_MS_FORMAT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic int计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。 1999-02-28出生,则相对2000-02-29,周岁为1static int生日转为年龄,计算法定年龄static int生日转为年龄,计算法定年龄(周岁) 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。 1999-02-28出生,则相对2000-02-29,周岁为1static DateTimebeginOfDay(Date date) 获取某天的开始时间static DateTimebeginOfHour(Date date) 获取某小时的开始时间static DateTimebeginOfMinute(Date date) 获取某分钟的开始时间static DateTimebeginOfMonth(Date date) 获取某月的开始时间static DateTimebeginOfQuarter(Date date) 获取某季度的开始时间static DateTimebeginOfSecond(Date date) 获取秒级别的开始时间,即毫秒部分设置为0static DateTimebeginOfWeek(Date date) 获取某周的开始时间,周一定为一周的开始时间static DateTimebeginOfWeek(Date date, boolean isMondayAsFirstDay) 获取某周的开始时间static DateTimebeginOfYear(Date date) 获取某年的开始时间static long判断两个日期相差的时长,只保留绝对值static long判断两个日期相差的时长static longbetweenDay(Date beginDate, Date endDate, boolean isReset) 判断两个日期相差的天数static longbetweenMonth(Date beginDate, Date endDate, boolean isReset) 计算两个日期相差月数 在非重置情况下,如果起始日期的天大于结束日期的天,月数要少算1(不足1个月)static long判断两个日期相差的毫秒数static longbetweenWeek(Date beginDate, Date endDate, boolean isReset) 计算指定时间区间内的周数static longbetweenYear(Date beginDate, Date endDate, boolean isReset) 计算两个日期相差年数 在非重置情况下,如果起始日期的月大于结束日期的月,年数要少算1(不足1年)static DateTime修改日期为某个时间字段结束时间static DateTime修改日期为某个时间字段结束时间 可选是否归零毫秒。static intnull安全的日期比较,并只比较指定格式;null对象排在末尾, 并指定日期格式;static StopWatch创建秒表StopWatch,用于对代码块的执行时间计数static StopWatch创建秒表StopWatch,用于对代码块的执行时间计数static longcurrent()当前时间的时间戳static long当前时间的时间戳(秒)static DateTimedate(long date) Long类型时间转为DateTime只支持毫秒级别时间戳,如果需要秒级别时间戳,请自行×1000Lstatic DateTimedate(TemporalAccessor temporalAccessor) static DateTimestatic DateTimestatic DateTimestatic DateTimedate(XMLGregorianCalendar date) static DateTimestatic DateTime当前时间,转换为DateTime对象,忽略毫秒部分static intdayOfMonth(Date date) 获得指定日期是这个日期所在月份的第几天static int获得指定日期是星期几,1表示周日,2表示周一static WeekdayOfWeekEnum(Date date) 获得指定日期是星期几static int获得指定日期是这个日期所在年的第几天static DateTime获取某天的结束时间static DateTime获取某小时的结束时间static DateTimeendOfMinute(Date date) 获取某分钟的结束时间static DateTimeendOfMonth(Date date) 获取某月的结束时间static DateTimeendOfQuarter(Date date) 获取某季度的结束时间static DateTimeendOfSecond(Date date) 获取秒级别的结束时间,即毫秒设置为999static DateTime获取某周的结束时间,周日定为一周的结束static DateTime获取某周的结束时间static DateTime获取某年的结束时间static String根据特定格式格式化日期static Stringformat(Date date, DateFormat format) 根据特定格式格式化日期static Stringformat(Date date, DateTimeFormatter format) 根据特定格式格式化日期static Stringformat(Date date, FormatPrinter format) 根据特定格式格式化日期static StringformatBetween(long betweenMs) 格式化日期间隔输出,精确到毫秒static StringformatBetween(long betweenMs, FormatPeriod.Level level) 格式化日期间隔输出static StringformatBetween(Date beginDate, Date endDate) 格式化日期间隔输出,精确到毫秒static StringformatBetween(Date beginDate, Date endDate, FormatPeriod.Level level) 格式化日期间隔输出static StringformatChineseDate(Date date, boolean isUppercase, boolean withTime) 格式化为中文日期格式,如果isUppercase为false,则返回类似:2024年05月20日,否则返回二〇二四年五月二十日static StringformatDate(Date date) 格式化日期部分(不包括时间) 格式 yyyy-MM-ddstatic StringformatDateTime(Date date) 格式化日期时间 格式 yyyy-MM-dd HH:mm:ssstatic StringformatHttpDate(Date date) 格式化为Http的标准日期格式 标准日期格式遵循RFC 1123规范,格式类似于:Fri, 31 Dec 1999 23:59:59 GMTstatic String当前时间,格式 yyyy-MM-dd HH:mm:ssstatic StringformatTime(Date date) 格式化时间 格式 HH:mm:ssstatic String当前日期,格式 yyyy-MM-ddstatic StringgetConstellation(int month, int day) 通过生日计算星座static intgetLastDayOfMonth(Date date) 获得本月的最后一天static StringgetShortName(TimeUnit unit) 获取时长单位简写static StringgetZodiac(int year) 计算生肖static int获得指定日期的小时数部分static boolean是否为上午boolean当前日期是否在日期指定范围内 起始日期和结束日期可以互换static boolean当前日期是否在日期指定范围内 起始日期和结束日期可以互换static boolean当前日期是否在日期指定范围内 起始日期和结束日期可以互换 通过includeBegin, includeEnd参数控制日期范围区间是否为开区间,例如:传入参数:includeBegin=true, includeEnd=false, 则本方法会判断 date ∈ (beginDate, endDate] 是否成立static booleanisLastDayOfMonth(Date date) 是否为本月最后一天static boolean检查两个时间段是否有时间重叠 重叠指两个时间段是否有交集,注意此方法时间段重合时如: 此方法未纠正开始时间小于结束时间 当realStartTime和realEndTime或startTime和endTime相等时,退化为判断区间是否包含点 当realStartTime和realEndTime和startTime和endTime相等时,退化为判断点与点是否相等 See 准确的区间关系参考:艾伦区间代数static boolean是否为下午static boolean比较两个日期是否为同一天static booleanisSameMonth(Date date1, Date date2) 比较两个日期是否为同一月static booleanisSameTime(Date date1, Date date2) 是否为相同时间 此方法比较两个日期的时间戳是否相同static booleanisSameWeek(Date date1, Date date2, boolean isMon) 比较两个日期是否为同一周static boolean是否为周末(周六或周日)static DateTime上个月static DateTimelastWeek()上周static intlengthOfMonth(int month, boolean isLeapYear) 获得指定月份的总天数static intlengthOfYear(int year) 获得指定年份的总天数static intmillisecond(Date date) 获得指定日期的毫秒数部分static int获得指定日期的分钟数部分 例如:10:04:15.250 = 4static int获得月份,从0开始计数static Month获得月份static longnanosToMillis(long duration) 纳秒转毫秒static doublenanosToSeconds(long duration) 纳秒转秒,保留小数static DateTime下个月static DateTimenextWeek()下周static DateTimenow()当前时间,转换为DateTime对象static LocalDateTimeDate转LocalDateTime,使用默认时区static DateTime获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期static DateTime偏移天static DateTimeoffsetHour(Date date, int offset) 偏移小时static DateTimeoffsetMillisecond(Date date, int offset) 偏移毫秒数static DateTimeoffsetMinute(Date date, int offset) 偏移分钟static DateTimeoffsetMonth(Date date, int offset) 偏移月static DateTimeoffsetSecond(Date date, int offset) 偏移秒数static DateTimeoffsetWeek(Date date, int offset) 偏移周static DateTimeoffsetYear(Date date, int offset) 偏移年static DateTimeparse(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.SSSZstatic int获得指定日期所属季度,从1开始计数static QuarterquarterEnum(Date date) 获得指定日期所属季度static Boundary创建日期范围生成器static void按日期范围遍历,执行 consumerrangeContains(Boundary start, Boundary end) 俩个时间区间取交集static <T> List<T> 按日期范围遍历,执行 functionrangeNotContains(Boundary start, Boundary end) 俩个时间区间取差集(end - start)rangeToList(Date start, Date end, Various unit) 根据步进单位获取起始日期时间和结束日期时间的时间区间集合rangeToList(Date start, Date end, Various unit, int step) 根据步进单位和步进获取起始日期时间和结束日期时间的时间区间集合static DateTime修改日期为某个时间字段四舍五入时间static int获得指定日期的秒数部分static StringsecondToTime(int seconds) 秒数转为时间格式(HH:mm:ss) 参考:https://github.com/icerootstatic longspendMs(long preTime) 计时,常用于记录某段代码的执行时间,单位:毫秒static longspendNt(long preTime) 计时,常用于记录某段代码的执行时间,单位:纳秒static intstatic intstatic Weekstatic intthisHour(boolean is24HourClock) static intstatic intstatic intstatic Monthstatic intstatic intstatic intstatic intthisYear()static inttimeToSecond(String timeStr) HH:mm:ss 时间格式字符串转为秒数 参考:https://github.com/icerootstatic DateTimetoday()当天开始的时间,结果类似:2022-10-26 00:00:00static InstanttoInstant(TemporalAccessor temporalAccessor) Date对象转换为Instant对象static InstantDate对象转换为Instant对象static LocalDateTimetoLocalDateTime(Instant instant) Instant转换为LocalDateTime,使用系统默认时区static LocalDateTimetoLocalDateTime(Date date) Date转换为LocalDateTime,使用系统默认时区static DateTimetomorrow()明天static DateTime修改日期为某个时间字段起始时间static intweekOfMonth(Date date) 获得指定日期是所在月份的第几周static intweekOfYear(Date date) 获得指定日期是所在年份的第几周 此方法返回值与一周的第一天有关,比如: 2016年1月3日为周日,如果一周的第一天为周日,那这天是第二周(返回2) 如果一周的第一天为周一,那这天是第一周(返回1) 跨年的那个星期得到的结果总是1static int获得年的部分static StringyearAndQuarter(Date date) 获得指定日期年份和季节 格式:[20131]表示2013年第一季度static DateTime昨天Methods inherited from class org.miaixz.bus.core.center.date.Calendar
age, age, age, age, beginOfDay, beginOfHour, beginOfMinute, beginOfMonth, beginOfQuarter, beginOfSecond, beginOfWeek, beginOfWeek, beginOfYear, calendar, calendar, calendar, calendar, calendar, calendar, ceiling, ceiling, compare, endOfDay, endOfHour, endOfMinute, endOfMonth, endOfQuarter, endOfSecond, endOfWeek, endOfWeek, endOfYear, formatChineseDate, getBeginValue, getBeginValue, getEndValue, getEndValue, getField, isAM, isFirstDayOfMonth, isLastDayOfMonth, isPM, isSameDay, isSameInstant, isSameMonth, isSameWeek, isSameYear, parse, parseByPatterns, parseByPatterns, parseByPatterns, round, toInstant, toLocalDateTime, truncate, yearAndQuarterMethods inherited from class org.miaixz.bus.core.center.date.Calculate
beginOfDay, beginOfDay, beginOfMonth, beginOfMonth, beginOfYear, beginOfYear, dayOfWeek, endOfDay, endOfDay, endOfMonth, endOfMonth, endOfYear, endOfYear, isIn, isIn, isLeapYear, isOverlap, isSameDay, isSameDay, isWeekend, isWeekend, max, offset, offset, offset, weekOfYearMethods inherited from class org.miaixz.bus.core.center.date.Resolver
normalize, parse, parse, parse, parse, parse, parse, parse, parseDate, parseDate, parseDateByISO, parseTime, parseTime, parseTimeByISOMethods inherited from class org.miaixz.bus.core.center.date.Converter
get, of, of, of, of, of, of, ofDate, ofPattern, ofUTC, ofUTC, ofZoned, toChronoUnit, toEpochMilli, toTimeUnit
-
Constructor Details
-
DateKit
public DateKit()
-
-
Method Details
-
isAM
是否为上午- Parameters:
date- 日期- Returns:
- 是否为上午
-
isPM
是否为下午- Parameters:
date- 日期- Returns:
- 是否为下午
-
isSameTime
是否为相同时间 此方法比较两个日期的时间戳是否相同- Parameters:
date1- 日期1date2- 日期2- Returns:
- 是否为相同时间
-
isSameDay
比较两个日期是否为同一天- Parameters:
date1- 日期1date2- 日期2- Returns:
- 是否为同一天
-
isSameWeek
比较两个日期是否为同一周- Parameters:
date1- 日期1date2- 日期2isMon- 是否为周一。国内第一天为星期一,国外第一天为星期日- Returns:
- 是否为同一周
-
isSameMonth
比较两个日期是否为同一月- Parameters:
date1- 日期1date2- 日期2- Returns:
- 是否为同一月
-
isIn
当前日期是否在日期指定范围内 起始日期和结束日期可以互换- Parameters:
date- 被检查的日期beginDate- 起始日期(包含)endDate- 结束日期(包含)- Returns:
- 是否在范围内
-
isIn
public static boolean isIn(Date date, Date beginDate, Date endDate, boolean includeBegin, boolean includeEnd) 当前日期是否在日期指定范围内 起始日期和结束日期可以互换 通过includeBegin, includeEnd参数控制日期范围区间是否为开区间,例如:传入参数:includeBegin=true, includeEnd=false, 则本方法会判断 date ∈ (beginDate, endDate] 是否成立- Parameters:
date- 被检查的日期beginDate- 起始日期endDate- 结束日期includeBegin- 时间范围是否包含起始日期includeEnd- 时间范围是否包含结束日期- Returns:
- 是否在范围内
-
now
当前时间,转换为DateTime对象- Returns:
- 当前时间
-
today
当天开始的时间,结果类似:2022-10-26 00:00:00- Returns:
- 当天开始的时间
-
dateSecond
当前时间,转换为DateTime对象,忽略毫秒部分- Returns:
- 当前时间
-
date
- Parameters:
date-Date,如果传入null,返回null- Returns:
- 时间对象
-
date
- Parameters:
date-XMLGregorianCalendar,如果传入null,返回null- Returns:
- 时间对象
-
dateNew
- Parameters:
date- Date对象,如果传入null,返回null- Returns:
DateTime对象
-
date
- Parameters:
date- Date对象,如果传入null,返回nulltimeZone- 时区,传入null则使用默认时区- Returns:
DateTime对象
-
date
Long类型时间转为DateTime只支持毫秒级别时间戳,如果需要秒级别时间戳,请自行×1000L- Parameters:
date- Long类型Date(Unix时间戳)- Returns:
- 时间对象
-
date
- Parameters:
calendar-Calendar,如果传入null,返回null- Returns:
- 时间对象
-
date
- Parameters:
temporalAccessor-TemporalAccessor,常用子类:LocalDateTime、 LocalDate,如果传入null,返回null- Returns:
- 时间对象
-
current
public static long current()当前时间的时间戳- Returns:
- 时间
-
currentSeconds
public static long currentSeconds()当前时间的时间戳(秒)- Returns:
- 当前时间秒数
-
formatNow
当前时间,格式 yyyy-MM-dd HH:mm:ss- Returns:
- 当前时间的标准形式字符串
-
formatToday
当前日期,格式 yyyy-MM-dd- Returns:
- 当前日期的标准形式字符串
-
year
获得年的部分- Parameters:
date- 日期- Returns:
- 年的部分
-
quarter
获得指定日期所属季度,从1开始计数- Parameters:
date- 日期- Returns:
- 第几个季度
-
quarterEnum
获得指定日期所属季度- Parameters:
date- 日期- Returns:
- 第几个季度枚举
-
month
获得月份,从0开始计数- Parameters:
date- 日期- Returns:
- 月份,从0开始计数
-
monthEnum
获得月份- Parameters:
date- 日期- Returns:
Month
-
weekOfYear
获得指定日期是所在年份的第几周 此方法返回值与一周的第一天有关,比如: 2016年1月3日为周日,如果一周的第一天为周日,那这天是第二周(返回2) 如果一周的第一天为周一,那这天是第一周(返回1) 跨年的那个星期得到的结果总是1- Parameters:
date- 日期- Returns:
- 周
- See Also:
-
weekOfMonth
获得指定日期是所在月份的第几周- Parameters:
date- 日期- Returns:
- 周
-
dayOfMonth
获得指定日期是这个日期所在月份的第几天- Parameters:
date- 日期- Returns:
- 天
-
dayOfYear
获得指定日期是这个日期所在年的第几天- Parameters:
date- 日期- Returns:
- 天
-
dayOfWeek
获得指定日期是星期几,1表示周日,2表示周一- Parameters:
date- 日期- Returns:
- 天
-
dayOfWeekEnum
获得指定日期是星期几- Parameters:
date- 日期- Returns:
Week
-
isWeekend
是否为周末(周六或周日)- Parameters:
date- 判定的日期Date- Returns:
- 是否为周末(周六或周日)
-
hour
获得指定日期的小时数部分- Parameters:
date- 日期is24HourClock- 是否24小时制- Returns:
- 小时数
-
minute
获得指定日期的分钟数部分 例如:10:04:15.250 = 4- Parameters:
date- 日期- Returns:
- 分钟数
-
second
获得指定日期的秒数部分- Parameters:
date- 日期- Returns:
- 秒数
-
millisecond
获得指定日期的毫秒数部分- Parameters:
date- 日期- Returns:
- 毫秒数
-
thisYear
public static int thisYear()- Returns:
- 今年
-
thisMonth
public static int thisMonth()- Returns:
- 当前月份,从0开始计数
-
thisMonthEnum
- Returns:
- 当前月份
Month
-
thisWeekOfYear
public static int thisWeekOfYear()- Returns:
- 当前日期所在年份的第几周
-
thisWeekOfMonth
public static int thisWeekOfMonth()- Returns:
- 当前日期所在月份的第几周
-
thisDayOfMonth
public static int thisDayOfMonth()- Returns:
- 当前日期是这个日期所在月份的第几天
-
thisDayOfWeek
public static int thisDayOfWeek()- Returns:
- 当前日期是星期几
-
thisDayOfWeekEnum
- Returns:
- 当前日期是星期几
Week
-
thisHour
public static int thisHour(boolean is24HourClock) - Parameters:
is24HourClock- 是否24小时制- Returns:
- 当前日期的小时数部分
-
thisMinute
public static int thisMinute()- Returns:
- 当前日期的分钟数部分
-
thisSecond
public static int thisSecond()- Returns:
- 当前日期的秒数部分
-
thisMillisecond
public static int thisMillisecond()- Returns:
- 当前日期的毫秒数部分
-
yearAndQuarter
获得指定日期年份和季节 格式:[20131]表示2013年第一季度- Parameters:
date- 日期- Returns:
- Quarter ,类似于 20132
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format- 日期格式,常用格式见:FieldsFields.NORM_DATETIME- Returns:
- 格式化后的字符串
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format-FormatPrinter或FormatBuilderFormatter.NORM_DATETIME_FORMAT- Returns:
- 格式化后的字符串
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format-SimpleDateFormat- Returns:
- 格式化后的字符串
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format-SimpleDateFormatFormatter.NORM_DATETIME_FORMATTER- Returns:
- 格式化后的字符串
-
formatDateTime
格式化日期时间 格式 yyyy-MM-dd HH:mm:ss- Parameters:
date- 被格式化的日期- Returns:
- 格式化后的日期
-
formatDate
格式化日期部分(不包括时间) 格式 yyyy-MM-dd- Parameters:
date- 被格式化的日期- Returns:
- 格式化后的字符串
-
formatTime
格式化时间 格式 HH:mm:ss- Parameters:
date- 被格式化的日期- Returns:
- 格式化后的字符串
-
formatHttpDate
格式化为Http的标准日期格式 标准日期格式遵循RFC 1123规范,格式类似于:Fri, 31 Dec 1999 23:59:59 GMT- Parameters:
date- 被格式化的日期- Returns:
- HTTP标准形式日期字符串
-
formatChineseDate
格式化为中文日期格式,如果isUppercase为false,则返回类似:2024年05月20日,否则返回二〇二四年五月二十日- Parameters:
date- 被格式化的日期isUppercase- 是否采用大写形式withTime- 是否包含时间部分- Returns:
- 中文日期字符串
-
parse
将日期字符串转换为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
- Parameters:
dateCharSequence- 日期字符串- Returns:
- 日期
-
truncate
修改日期为某个时间字段起始时间- Parameters:
date-Datevarious- 保留到的时间字段,如定义为Various.SECOND,表示这个字段不变,这个字段以下字段全部归0- Returns:
DateTime
-
round
修改日期为某个时间字段四舍五入时间 -
ceiling
修改日期为某个时间字段结束时间- Parameters:
date-Datevarious- 保留到的时间字段,如定义为Various.SECOND,表示这个字段不变,这个字段以下字段全部取最大值- Returns:
DateTime
-
ceiling
修改日期为某个时间字段结束时间 可选是否归零毫秒。有时候由于毫秒部分必须为0(如MySQL数据库中),因此在此加上选项。
-
beginOfSecond
获取秒级别的开始时间,即毫秒部分设置为0- Parameters:
date- 日期- Returns:
DateTime
-
endOfSecond
获取秒级别的结束时间,即毫秒设置为999- Parameters:
date- 日期- Returns:
DateTime
-
beginOfHour
获取某小时的开始时间- Parameters:
date- 日期- Returns:
DateTime
-
endOfHour
获取某小时的结束时间- Parameters:
date- 日期- Returns:
DateTime
-
beginOfMinute
获取某分钟的开始时间- Parameters:
date- 日期- Returns:
DateTime
-
endOfMinute
获取某分钟的结束时间- Parameters:
date- 日期- Returns:
DateTime
-
beginOfDay
获取某天的开始时间- Parameters:
date- 日期- Returns:
DateTime
-
endOfDay
获取某天的结束时间- Parameters:
date- 日期- Returns:
DateTime
-
beginOfWeek
获取某周的开始时间,周一定为一周的开始时间- Parameters:
date- 日期- Returns:
DateTime
-
beginOfWeek
获取某周的开始时间- Parameters:
date- 日期isMondayAsFirstDay- 是否周一做为一周的第一天(false表示周日做为第一天)- Returns:
DateTime
-
endOfWeek
获取某周的结束时间,周日定为一周的结束- Parameters:
date- 日期- Returns:
DateTime
-
endOfWeek
获取某周的结束时间- Parameters:
date- 日期isSundayAsLastDay- 是否周日做为一周的最后一天(false表示周六做为最后一天)- Returns:
DateTime
-
beginOfMonth
获取某月的开始时间- Parameters:
date- 日期- Returns:
DateTime
-
endOfMonth
获取某月的结束时间- Parameters:
date- 日期- Returns:
DateTime
-
beginOfQuarter
获取某季度的开始时间- Parameters:
date- 日期- Returns:
DateTime
-
endOfQuarter
获取某季度的结束时间- Parameters:
date- 日期- Returns:
DateTime
-
beginOfYear
获取某年的开始时间- Parameters:
date- 日期- Returns:
DateTime
-
endOfYear
获取某年的结束时间- Parameters:
date- 日期- Returns:
DateTime
-
yesterday
昨天- Returns:
- 昨天
-
tomorrow
明天- Returns:
- 明天
-
lastWeek
上周- Returns:
- 上周
-
nextWeek
下周- Returns:
- 下周
-
lastMonth
上个月- Returns:
- 上个月
-
nextMonth
下个月- Returns:
- 下个月
-
offsetMillisecond
偏移毫秒数- Parameters:
date- 日期offset- 偏移毫秒数,正数向未来偏移,负数向历史偏移- Returns:
- 偏移后的日期
-
offsetSecond
偏移秒数- Parameters:
date- 日期offset- 偏移秒数,正数向未来偏移,负数向历史偏移- Returns:
- 偏移后的日期
-
offsetMinute
偏移分钟- Parameters:
date- 日期offset- 偏移分钟数,正数向未来偏移,负数向历史偏移- Returns:
- 偏移后的日期
-
offsetHour
偏移小时- Parameters:
date- 日期offset- 偏移小时数,正数向未来偏移,负数向历史偏移- Returns:
- 偏移后的日期
-
offsetDay
偏移天- Parameters:
date- 日期offset- 偏移天数,正数向未来偏移,负数向历史偏移- Returns:
- 偏移后的日期
-
offsetWeek
偏移周- Parameters:
date- 日期offset- 偏移周数,正数向未来偏移,负数向历史偏移- Returns:
- 偏移后的日期
-
offsetMonth
偏移月- Parameters:
date- 日期offset- 偏移月数,正数向未来偏移,负数向历史偏移- Returns:
- 偏移后的日期
-
offsetYear
偏移年- Parameters:
date- 日期offset- 偏移月数,正数向未来偏移,负数向历史偏移- Returns:
- 偏移后的日期
-
offset
获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期- Parameters:
date- 基准日期various- 偏移的粒度大小(小时、天、月等)Variousoffset- 偏移量,正数为向后偏移,负数为向前偏移- Returns:
- 偏移后的日期
-
between
判断两个日期相差的时长,只保留绝对值- Parameters:
beginDate- 起始日期endDate- 结束日期unit- 相差的单位:相差 天Units.DAY、小时Units.HOUR等- Returns:
- 日期差
-
between
判断两个日期相差的时长- Parameters:
beginDate- 起始日期endDate- 结束日期unit- 相差的单位:相差 天Units.DAY、小时Units.HOUR等isAbs- 日期间隔是否只保留绝对值正数- Returns:
- 日期差
-
betweenMs
判断两个日期相差的毫秒数- Parameters:
beginDate- 起始日期endDate- 结束日期- Returns:
- 日期差
-
betweenDay
判断两个日期相差的天数有时候我们计算相差天数的时候需要忽略时分秒。 比如:2016-02-01 23:59:59和2016-02-02 00:00:00相差一秒 如果isReset为
false相差天数为0。 如果isReset为true相差天数将被计算为1- Parameters:
beginDate- 起始日期endDate- 结束日期isReset- 是否重置时间为起始时间- Returns:
- 日期差
-
betweenWeek
计算指定时间区间内的周数- Parameters:
beginDate- 开始时间endDate- 结束时间isReset- 是否重置时间为起始时间- Returns:
- 周数
-
betweenMonth
计算两个日期相差月数 在非重置情况下,如果起始日期的天大于结束日期的天,月数要少算1(不足1个月)- Parameters:
beginDate- 起始日期endDate- 结束日期isReset- 是否重置时间为起始时间(重置天时分秒)- Returns:
- 相差月数
-
betweenYear
计算两个日期相差年数 在非重置情况下,如果起始日期的月大于结束日期的月,年数要少算1(不足1年)- Parameters:
beginDate- 起始日期endDate- 结束日期isReset- 是否重置时间为起始时间(重置月天时分秒)- Returns:
- 相差年数
-
formatBetween
格式化日期间隔输出- Parameters:
beginDate- 起始日期endDate- 结束日期level- 级别,按照天、小时、分、秒、毫秒分为5个等级- Returns:
- XX天XX小时XX分XX秒
-
formatBetween
格式化日期间隔输出,精确到毫秒- Parameters:
beginDate- 起始日期endDate- 结束日期- Returns:
- XX天XX小时XX分XX秒
-
formatBetween
格式化日期间隔输出- Parameters:
betweenMs- 日期间隔level- 级别,按照天、小时、分、秒、毫秒分为5个等级- Returns:
- XX天XX小时XX分XX秒XX毫秒
-
formatBetween
格式化日期间隔输出,精确到毫秒- Parameters:
betweenMs- 日期间隔- Returns:
- XX天XX小时XX分XX秒XX毫秒
-
spendNt
public static long spendNt(long preTime) 计时,常用于记录某段代码的执行时间,单位:纳秒- Parameters:
preTime- 之前记录的时间- Returns:
- 时间差,纳秒
-
spendMs
public static long spendMs(long preTime) 计时,常用于记录某段代码的执行时间,单位:毫秒- Parameters:
preTime- 之前记录的时间- Returns:
- 时间差,毫秒
-
createStopWatch
创建秒表StopWatch,用于对代码块的执行时间计数使用方法如下:
StopWatch stopWatch = DateKit.createStopWatch(); // 任务1 stopWatch.start("任务一"); Thread.sleep(1000); stopWatch.stop(); // 任务2 stopWatch.start("任务二"); Thread.sleep(2000); stopWatch.stop(); // 打印出耗时 Console.log(stopWatch.prettyPrint());- Returns:
StopWatch
-
createStopWatch
创建秒表StopWatch,用于对代码块的执行时间计数使用方法如下:
StopWatch stopWatch = DateKit.createStopWatch("任务名称"); // 任务1 stopWatch.start("任务一"); Thread.sleep(1000); stopWatch.stop(); // 任务2 stopWatch.start("任务二"); Thread.sleep(2000); stopWatch.stop(); // 打印出耗时 Console.log(stopWatch.prettyPrint());- Parameters:
id- 用于标识秒表的唯一ID- Returns:
StopWatch
-
ageOfNow
生日转为年龄,计算法定年龄- Parameters:
birthDay- 生日,标准日期字符串- Returns:
- 年龄
-
ageOfNow
生日转为年龄,计算法定年龄(周岁) 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。- 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。
- 1999-02-28出生,则相对2000-02-29,周岁为1
- Parameters:
birthDay- 生日- Returns:
- 年龄
-
age
计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。- 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。
- 1999-02-28出生,则相对2000-02-29,周岁为1
- Parameters:
birthday- 生日dateToCompare- 需要对比的日期- Returns:
- 年龄
-
timeToSecond
HH:mm:ss 时间格式字符串转为秒数 参考:https://github.com/iceroot- Parameters:
timeStr- 字符串时分秒(HH:mm:ss)格式- Returns:
- 时分秒转换后的秒数
-
secondToTime
秒数转为时间格式(HH:mm:ss) 参考:https://github.com/iceroot- Parameters:
seconds- 需要转换的秒数- Returns:
- 转换后的字符串
-
range
创建日期范围生成器- Parameters:
start- 起始日期时间(包括)end- 结束日期时间unit- 步进单位- Returns:
Boundary
-
rangeContains
俩个时间区间取交集- Parameters:
start- 开始区间end- 结束区间- Returns:
- true 包含
-
rangeNotContains
俩个时间区间取差集(end - start)- Parameters:
start- 开始区间end- 结束区间- Returns:
- true 包含
-
rangeFunc
按日期范围遍历,执行 function- Type Parameters:
T- Date经过函数处理结果类型- Parameters:
start- 起始日期时间(包括)end- 结束日期时间unit- 步进单位func- 每次遍历要执行的 function- Returns:
- 结果列表
-
rangeConsume
按日期范围遍历,执行 consumer- Parameters:
start- 起始日期时间(包括)end- 结束日期时间unit- 步进单位consumer- 每次遍历要执行的 consumer
-
rangeToList
根据步进单位获取起始日期时间和结束日期时间的时间区间集合- Parameters:
start- 起始日期时间end- 结束日期时间unit- 步进单位- Returns:
Boundary
-
rangeToList
根据步进单位和步进获取起始日期时间和结束日期时间的时间区间集合- Parameters:
start- 起始日期时间end- 结束日期时间unit- 步进单位step- 步进- Returns:
Boundary
-
getConstellation
通过生日计算星座- Parameters:
month- 月,从0开始计数day- 天- Returns:
- 星座名
-
getZodiac
计算生肖- Parameters:
year- 农历年- Returns:
- 生肖名
-
compare
null安全的日期比较,并只比较指定格式;null对象排在末尾, 并指定日期格式;- Parameters:
date1- 日期1date2- 日期2format- 日期格式,常用格式见:Fields; 允许为空; date1 date2; eg: yyyy-MM-dd- Returns:
- 比较结果,如果date1 < date2,返回数小于0,date1==date2返回0,date1 > date2 大于0
-
nanosToMillis
public static long nanosToMillis(long duration) 纳秒转毫秒- Parameters:
duration- 时长- Returns:
- 时长毫秒
-
nanosToSeconds
public static double nanosToSeconds(long duration) 纳秒转秒,保留小数- Parameters:
duration- 时长- Returns:
- 秒
-
toInstant
Date对象转换为Instant对象- Parameters:
date- Date对象- Returns:
Instant对象
-
toInstant
Date对象转换为Instant对象- Parameters:
temporalAccessor- Date对象- Returns:
Instant对象
-
toLocalDateTime
Instant转换为LocalDateTime,使用系统默认时区- Parameters:
instant-Instant- Returns:
LocalDateTime- See Also:
-
toLocalDateTime
Date转换为LocalDateTime,使用系统默认时区- Parameters:
date-Date- Returns:
LocalDateTime
-
lengthOfYear
public static int lengthOfYear(int year) 获得指定年份的总天数- Parameters:
year- 年份- Returns:
- 天
-
lengthOfMonth
public static int lengthOfMonth(int month, boolean isLeapYear) 获得指定月份的总天数- Parameters:
month- 月份isLeapYear- 是否闰年- Returns:
- 天
-
of
Date转LocalDateTime,使用默认时区- Parameters:
date- Date对象- Returns:
LocalDateTime
-
getShortName
获取时长单位简写- Parameters:
unit- 单位- Returns:
- 单位简写名称
-
isOverlap
检查两个时间段是否有时间重叠 重叠指两个时间段是否有交集,注意此方法时间段重合时如:- 此方法未纠正开始时间小于结束时间
- 当realStartTime和realEndTime或startTime和endTime相等时,退化为判断区间是否包含点
- 当realStartTime和realEndTime和startTime和endTime相等时,退化为判断点与点是否相等
- Parameters:
realStartTime- 第一个时间段的开始时间realEndTime- 第一个时间段的结束时间startTime- 第二个时间段的开始时间endTime- 第二个时间段的结束时间- Returns:
- true 表示时间有重合或包含或相等
-
isLastDayOfMonth
是否为本月最后一天- Parameters:
date-Date- Returns:
- 是否为本月最后一天
-
getLastDayOfMonth
获得本月的最后一天- Parameters:
date-Date- Returns:
- 天
-
isIn
当前日期是否在日期指定范围内 起始日期和结束日期可以互换- Parameters:
beginDate- 起始日期(包含)endDate- 结束日期(包含)- Returns:
- 是否在范围内
-