Package org.miaixz.bus.core.center.date
Class Calendars
java.lang.Object
org.miaixz.bus.core.center.date.Formatter
org.miaixz.bus.core.center.date.Converter
org.miaixz.bus.core.center.date.Resolver
org.miaixz.bus.core.center.date.Almanac
org.miaixz.bus.core.center.date.Calendars
- Direct Known Subclasses:
DateKit
针对
Calendar 对象封装工具类- Since:
- Java 17+
- Author:
- Kimi Liu
-
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, 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_MONTH_FORMAT, NORM_MONTH_FORMATTER, NORM_TIME_FORMAT, NORM_TIME_FORMATTER, 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_TIME_FORMAT, PURE_TIME_FORMATTER, SIMPLE_MONTH_FORMAT, SIMPLE_MONTH_FORMATTER, UTC_FORMAT, UTC_MS_FORMAT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static intage(long birthday, long dateToCompare) 计算相对于dateToCompare的年龄(周岁),常用于计算指定生日在某年的年龄 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。 1999-02-28出生,则相对2000-02-29,周岁为1static int计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。 1999-02-28出生,则相对2000-02-29,周岁为1static CalendarbeginOfDay(Calendar calendar) 修改某天的开始时间static CalendarbeginOfHour(Calendar calendar) 修改某小时的开始时间static CalendarbeginOfMinute(Calendar calendar) 修改某分钟的开始时间static CalendarbeginOfMonth(Calendar calendar) 修改某月的开始时间static CalendarbeginOfQuarter(Calendar calendar) 修改某季度的开始时间static CalendarbeginOfSecond(Calendar calendar) 修改秒级别的开始时间,即忽略毫秒部分static CalendarbeginOfWeek(Calendar calendar) 修改给定日期当前周的开始时间,周一定为一周的开始时间static CalendarbeginOfWeek(Calendar calendar, boolean isMondayAsFirstDay) 修改给定日期当前周的开始时间static CalendarbeginOfYear(Calendar calendar) 修改某年的开始时间static Calendarcalendar()创建Calendar对象,时间为默认时区的当前时间static Calendarcalendar(long millis) 转换为Calendar对象,使用当前默认时区static Calendar转换为Calendar对象static Calendar转换为指定时区的Calendar,返回新的Calendarstatic Calendar转换为Calendar对象static Calendarcalendar(XMLGregorianCalendar calendar) 转换为Calendar对象static Calendarceiling(Calendar calendar, Fields.Type type) 修改日期为某个时间字段结束时间static Calendarceiling(Calendar calendar, Fields.Type type, boolean truncateMillisecond) 修改日期为某个时间字段结束时间 可选是否归零毫秒。static intstatic Calendar修改某天的结束时间static Calendar修改某小时的结束时间static CalendarendOfMinute(Calendar calendar) 修改某分钟的结束时间static CalendarendOfMonth(Calendar calendar) 修改某月的结束时间static CalendarendOfQuarter(Calendar calendar) 获取某季度的结束时间static CalendarendOfSecond(Calendar calendar) 修改秒级别的结束时间,即毫秒设置为999static Calendar修改某周的结束时间,周日定为一周的结束static Calendar修改某周的结束时间static Calendar修改某年的结束时间static StringformatChineseDate(Calendar calendar, boolean withTime) 将指定Calendar时间格式化为纯中文形式,比如:static intgetBeginValue(Calendar calendar, int dateField) 获取指定日期字段的最小值,例如分钟的最小值是0static intgetBeginValue(Calendar calendar, Fields.Type type) 获取指定日期字段的最小值,例如分钟的最小值是0static intgetEndValue(Calendar calendar, int dateField) 获取指定日期字段的最大值,例如分钟的最大值是59static intgetEndValue(Calendar calendar, Fields.Type type) 获取指定日期字段的最大值,例如分钟的最大值是59static intgetField(Calendar calendar, Fields.Type field) 获得日期的某个部分 例如获得年的部分,则使用 getField(DatePart.YEAR)static boolean是否为上午static booleanisFirstDayOfMonth(Calendar calendar) 是否为本月第一天static booleanisLastDayOfMonth(Calendar calendar) 是否为本月最后一天static boolean是否为下午static boolean比较两个日期是否为同一天static booleanisSameInstant(Calendar date1, Calendar date2) 检查两个Calendar时间戳是否相同static booleanisSameMonth(Calendar cal1, Calendar cal2) 比较两个日期是否为同一月 同一个月的意思是:ERA(公元)、year(年)、month(月)都一致。static booleanisSameWeek(Calendar cal1, Calendar cal2, boolean isMon) 比较两个日期是否为同一周 同一个周的意思是:ERA(公元)、year(年)、month(月)、week(周)都一致。static booleanisSameYear(Calendar cal1, Calendar cal2) 比较两个日期是否为同一年 同一个年的意思是:ERA(公元)、year(年)都一致。static Calendarparse(CharSequence text, boolean lenient, PositionDateParser parser) 使用指定DateParser解析字符串为Calendarstatic CalendarparseByPatterns(String text, String... parsePatterns) 通过给定的日期格式解析日期时间字符串。 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象,否则抛出DateException异常。 方法来自:Apache Commons-Lang3static CalendarparseByPatterns(String text, Locale locale, boolean lenient, String... parsePatterns) 通过给定的日期格式解析日期时间字符串。 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象,否则抛出DateException异常。 方法来自:Apache Commons-Lang3static CalendarparseByPatterns(String text, Locale locale, String... parsePatterns) 通过给定的日期格式解析日期时间字符串。 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象,否则抛出DateException异常。 方法来自:Apache Commons-Lang3static Calendarround(Calendar calendar, Fields.Type type) 修改日期为某个时间字段四舍五入时间static InstantCalendarInstant对象static LocalDateTimetoLocalDateTime(Calendar calendar) Calendar转换为LocalDateTime,使用系统默认时区static Calendartruncate(Calendar calendar, Fields.Type type) 修改日期为某个时间字段起始时间static StringyearAndQuarter(Calendar cal) 获得指定日期年份和季度 格式:[20131]表示2013年第一季度Methods inherited from class org.miaixz.bus.core.center.date.Almanac
beginOfDay, beginOfMonth, beginOfYear, between, between, between, between, betweenPeriod, dayOfWeek, endOfDay, endOfMonth, endOfYear, isIn, isIn, isOverlap, isSameDay, isSameDay, isWeekend, isWeekend, offset, offset, offset, weekOfYearMethods inherited from class org.miaixz.bus.core.center.date.Resolver
parseDate, parseDate, parseDateByISO, parseTime, parseTime, parseTimeByISOMethods inherited from class org.miaixz.bus.core.center.date.Converter
get, max, of, of, of, of, of, of, of, ofDate, ofPattern, ofUTC, ofUTC, toChronoUnit, toEpochMilli, toInstant, toTimeUnitMethods inherited from class org.miaixz.bus.core.center.date.Formatter
format, format, formatFunc, formatNormal, formatNormal
-
Constructor Details
-
Calendars
public Calendars()
-
-
Method Details
-
calendar
创建Calendar对象,时间为默认时区的当前时间- Returns:
- Calendar对象
-
calendar
转换为Calendar对象- Parameters:
date- 日期对象- Returns:
- Calendar对象
-
calendar
转换为Calendar对象- Parameters:
calendar- 日期对象- Returns:
- Calendar对象
-
calendar
转换为Calendar对象,使用当前默认时区- Parameters:
millis- 时间戳- Returns:
- Calendar对象
-
calendar
转换为Calendar对象- Parameters:
millis- 时间戳timeZone- 时区- Returns:
- Calendar对象
-
calendar
转换为指定时区的Calendar,返回新的Calendar- Parameters:
calendar- 时间timeZone- 新时区- Returns:
- 指定时区的新的calendar对象
-
isAM
是否为上午- Parameters:
calendar-Calendar- Returns:
- 是否为上午
-
isPM
是否为下午- Parameters:
calendar-Calendar- Returns:
- 是否为下午
-
truncate
修改日期为某个时间字段起始时间- Parameters:
calendar-Calendartype- 保留到的时间字段,如定义为Fields.Type.SECOND,表示这个字段不变,这个字段以下字段全部归0- Returns:
- 原
Calendar
-
round
修改日期为某个时间字段四舍五入时间 -
ceiling
修改日期为某个时间字段结束时间- Parameters:
calendar-Calendartype- 保留到的时间字段,如定义为Fields.Type.SECOND,表示这个字段不变,这个字段以下字段全部取最大值- Returns:
- 原
Calendar
-
ceiling
修改日期为某个时间字段结束时间 可选是否归零毫秒。有时候由于毫秒部分必须为0(如MySQL数据库中),因此在此加上选项。
-
beginOfSecond
修改秒级别的开始时间,即忽略毫秒部分 -
endOfSecond
修改秒级别的结束时间,即毫秒设置为999 -
beginOfHour
修改某小时的开始时间 -
endOfHour
修改某小时的结束时间 -
beginOfMinute
修改某分钟的开始时间 -
endOfMinute
修改某分钟的结束时间 -
beginOfDay
修改某天的开始时间 -
endOfDay
修改某天的结束时间 -
beginOfWeek
修改给定日期当前周的开始时间,周一定为一周的开始时间 -
beginOfWeek
修改给定日期当前周的开始时间 -
endOfWeek
修改某周的结束时间,周日定为一周的结束 -
endOfWeek
修改某周的结束时间 -
beginOfMonth
修改某月的开始时间 -
endOfMonth
修改某月的结束时间 -
beginOfQuarter
修改某季度的开始时间 -
endOfQuarter
获取某季度的结束时间 -
beginOfYear
修改某年的开始时间 -
endOfYear
修改某年的结束时间 -
isSameDay
比较两个日期是否为同一天- Parameters:
cal1- 日期1cal2- 日期2- Returns:
- 是否为同一天
-
isSameWeek
比较两个日期是否为同一周 同一个周的意思是:ERA(公元)、year(年)、month(月)、week(周)都一致。- Parameters:
cal1- 日期1cal2- 日期2isMon- 一周的第一天是否为周一。国内第一天为星期一,国外第一天为星期日- Returns:
- 是否为同一周
-
isSameMonth
比较两个日期是否为同一月 同一个月的意思是:ERA(公元)、year(年)、month(月)都一致。- Parameters:
cal1- 日期1cal2- 日期2- Returns:
- 是否为同一月
-
isSameYear
比较两个日期是否为同一年 同一个年的意思是:ERA(公元)、year(年)都一致。- Parameters:
cal1- 日期1cal2- 日期2- Returns:
- 是否为同一年
-
isSameInstant
检查两个Calendar时间戳是否相同此方法检查两个Calendar的毫秒数时间戳是否相同
- Parameters:
date1- 时间1date2- 时间2- Returns:
- 两个Calendar时间戳是否相同。如果两个时间都为
null返回true,否则有null返回false
-
yearAndQuarter
获得指定日期年份和季度 格式:[20131]表示2013年第一季度- Parameters:
cal- 日期- Returns:
- 年和季度,格式类似于20131
-
getBeginValue
获取指定日期字段的最小值,例如分钟的最小值是0- Parameters:
calendar-Calendartype-Fields.Type- Returns:
- 字段最小值
- See Also:
-
getBeginValue
获取指定日期字段的最小值,例如分钟的最小值是0- Parameters:
calendar-CalendardateField-Fields.Type- Returns:
- 字段最小值
- See Also:
-
getEndValue
获取指定日期字段的最大值,例如分钟的最大值是59- Parameters:
calendar-Calendartype-Fields.Type- Returns:
- 字段最大值
- See Also:
-
getEndValue
获取指定日期字段的最大值,例如分钟的最大值是59- Parameters:
calendar-CalendardateField-Fields.Type- Returns:
- 字段最大值
- See Also:
-
getField
获得日期的某个部分 例如获得年的部分,则使用 getField(DatePart.YEAR)- Parameters:
calendar-Calendarfield- 表示日期的哪个部分的枚举Fields.Type- Returns:
- 某个部分的值
-
toInstant
CalendarInstant对象- Parameters:
calendar- Date对象- Returns:
Instant对象
-
toLocalDateTime
Calendar转换为LocalDateTime,使用系统默认时区- Parameters:
calendar-Calendar- Returns:
LocalDateTime
-
compare
- Parameters:
calendar1- 日期1calendar2- 日期2- Returns:
- 比较结果,如果calendar1 < calendar2,返回数小于0,calendar1==calendar2返回0,calendar1 > calendar2 大于0
-
age
计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。- 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。
- 1999-02-28出生,则相对2000-02-29,周岁为1
- Parameters:
birthday- 生日dateToCompare- 需要对比的日期- Returns:
- 年龄
-
formatChineseDate
将指定Calendar时间格式化为纯中文形式,比如:2018-02-24 12:13:14 转换为 二〇一八年二月二十四日(withTime为false) 2018-02-24 12:13:14 转换为 二〇一八年二月二十四日十二时十三分十四秒(withTime为true)- Parameters:
calendar-CalendarwithTime- 是否包含时间部分- Returns:
- 格式化后的字符串
-
parseByPatterns
通过给定的日期格式解析日期时间字符串。 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象,否则抛出DateException异常。 方法来自:Apache Commons-Lang3- Parameters:
text- 日期时间字符串,非空parsePatterns- 需要尝试的日期时间格式数组,非空, 见SimpleDateFormat- Returns:
- 解析后的Calendar
- Throws:
IllegalArgumentException- if the date string or pattern array is nullDateException- if none of the date patterns were suitable
-
parseByPatterns
public static Calendar parseByPatterns(String text, Locale locale, String... parsePatterns) throws DateException 通过给定的日期格式解析日期时间字符串。 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象,否则抛出DateException异常。 方法来自:Apache Commons-Lang3- Parameters:
text- 日期时间字符串,非空locale- 地区,当为null时使用Locale.getDefault()parsePatterns- 需要尝试的日期时间格式数组,非空, 见SimpleDateFormat- Returns:
- 解析后的Calendar
- Throws:
IllegalArgumentException- if the date string or pattern array is nullDateException- if none of the date patterns were suitable
-
parseByPatterns
public static Calendar parseByPatterns(String text, Locale locale, boolean lenient, String... parsePatterns) throws DateException 通过给定的日期格式解析日期时间字符串。 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象,否则抛出DateException异常。 方法来自:Apache Commons-Lang3- Parameters:
text- 日期时间字符串,非空locale- 地区,当为null时使用Locale.getDefault()lenient- 日期时间解析是否使用严格模式parsePatterns- 需要尝试的日期时间格式数组,非空, 见SimpleDateFormat- Returns:
- 解析后的Calendar
- Throws:
IllegalArgumentException- if the date string or pattern array is nullDateException- if none of the date patterns were suitable- See Also:
-
parse
使用指定DateParser解析字符串为Calendar- Parameters:
text- 日期字符串lenient- 是否宽容模式parser-DateParser- Returns:
- 解析后的
Calendar,解析失败返回null
-
age
protected static int age(long birthday, long dateToCompare) 计算相对于dateToCompare的年龄(周岁),常用于计算指定生日在某年的年龄 按照《最高人民法院关于审理未成年人刑事案件具体应用法律若干问题的解释》第二条规定刑法第十七条规定的“周岁”,按照公历的年、月、日计算,从周岁生日的第二天起算。- 2022-03-01出生,则相对2023-03-01,周岁为0,相对于2023-03-02才是1岁。
- 1999-02-28出生,则相对2000-02-29,周岁为1
- Parameters:
birthday- 生日dateToCompare- 需要对比的日期- Returns:
- 年龄
-
isFirstDayOfMonth
是否为本月第一天- Parameters:
calendar-Calendar- Returns:
- 是否为本月最后一天
-
isLastDayOfMonth
是否为本月最后一天- Parameters:
calendar-Calendar- Returns:
- 是否为本月最后一天
-