hutool.core.date¶
日期时间工具模块,对应 Java Hutool 的 cn.hutool.core.date.DateUtil 和 cn.hutool.core.date.DateTime。
使用 pendulum 作为底层日期时间库,提供丰富的日期操作方法。
Module Contents¶
Classes¶
Functions¶
将各种日期类型统一转换为 pendulum.DateTime。 |
Data¶
API¶
- hutool.core.date._timedelta_pattern = <Multiline-String>¶
- hutool.core.date._TIMELTA_RE = 'compile(...)'¶
- class hutool.core.date.DateTime(dt: Union[datetime.datetime, str, pendulum.DateTime, hutool.core.date.DateTime, None] = None)¶
日期时间封装类,包装 pendulum.DateTime。
与 Java Hutool 的 cn.hutool.core.date.DateTime 对应, 对 pendulum 的 DateTime 进行封装,提供链式调用和便捷方法。
Initialization
构造 DateTime 对象。
- 参数:
dt – 可以是 None(当前时间)、字符串(自动解析)、 datetime 对象、pendulum.DateTime 或另一个 DateTime。
- property dt: pendulum.DateTime¶
获取内部 pendulum.DateTime 对象。
- year() int¶
获取年份。
- 返回:
年份
- month() int¶
获取月份(1-12)。
- 返回:
月份
- day_of_month() int¶
获取日(1-31)。
- 返回:
日
- hour() int¶
获取小时(0-23)。
- 返回:
小时
- minute() int¶
获取分钟(0-59)。
- 返回:
分钟
- second() int¶
获取秒(0-59)。
- 返回:
秒
- day_of_week() int¶
获取星期几(ISO 标准:1=周一, 7=周日)。
- 返回:
星期几(1-7)
- quarter() int¶
获取季度(1-4)。
- 返回:
季度
- week_of_year() int¶
获取一年中的第几周(ISO 标准)。
- 返回:
周数
- to_str(fmt: str = 'YYYY-MM-DD HH:mm:ss') str¶
格式化为字符串。
- 参数:
fmt – 格式化模式,使用 pendulum 的格式化占位符。
- 返回:
格式化后的字符串。
- to_date() datetime.date¶
转换为 date 对象。
- 返回:
date 对象
- to_datetime() datetime.datetime¶
转换为标准 datetime 对象。
- 返回:
datetime 对象
- offset(**kwargs) hutool.core.date.DateTime¶
偏移日期时间。
- 参数:
kwargs – 偏移参数,支持 years, months, weeks, days, hours, minutes, seconds。
- 返回:
偏移后的新 DateTime 对象。
- 示例:
DateTime().offset(days=1) # 明天此时 DateTime().offset(months=-1) # 上月此时
- begin_of_day() hutool.core.date.DateTime¶
获取当天开始时间(00:00:00)。
- 返回:
当天开始的 DateTime 对象
- end_of_day() hutool.core.date.DateTime¶
获取当天结束时间(23:59:59.999999)。
- 返回:
当天结束的 DateTime 对象
- begin_of_month() hutool.core.date.DateTime¶
获取当月开始时间。
- 返回:
当月开始的 DateTime 对象
- end_of_month() hutool.core.date.DateTime¶
获取当月结束时间。
- 返回:
当月结束的 DateTime 对象
- begin_of_year() hutool.core.date.DateTime¶
获取当年开始时间。
- 返回:
当年开始的 DateTime 对象
- end_of_year() hutool.core.date.DateTime¶
获取当年结束时间。
- 返回:
当年结束的 DateTime 对象
- begin_of_week() hutool.core.date.DateTime¶
获取本周开始时间(周一)。
- 返回:
本周开始的 DateTime 对象
- end_of_week() hutool.core.date.DateTime¶
获取本周结束时间(周日)。
- 返回:
本周结束的 DateTime 对象
- begin_of_quarter() hutool.core.date.DateTime¶
获取本季度开始时间。
- 返回:
本季度开始的 DateTime 对象
- end_of_quarter() hutool.core.date.DateTime¶
获取本季度结束时间。
- 返回:
本季度结束的 DateTime 对象
- __repr__() str¶
- __str__() str¶
- __eq__(other: object) bool¶
- __lt__(other: object) bool¶
- __gt__(other: object) bool¶
- __le__(other: object) bool¶
- __ge__(other: object) bool¶
- __hash__() int¶
- __sub__(other: object) datetime.timedelta¶
- __add__(other: object) hutool.core.date.DateTime¶
- classmethod of(dt: Union[datetime.datetime, str, pendulum.DateTime, hutool.core.date.DateTime, None] = None) hutool.core.date.DateTime¶
工厂方法,等同于构造函数。
- 参数:
dt – 日期时间
- 返回:
DateTime 对象
- classmethod of_date(y: int, m: int, d: int) hutool.core.date.DateTime¶
根据年月日创建 DateTime。
- 参数:
y – 年
m – 月
d – 日
- 返回:
DateTime 对象
- classmethod of_datetime(y: int, m: int, d: int, h: int = 0, mi: int = 0, s: int = 0) hutool.core.date.DateTime¶
根据年月日时分秒创建 DateTime。
- 参数:
y – 年
m – 月
d – 日
h – 时
mi – 分
s – 秒
- 返回:
DateTime 对象
- classmethod of_pattern(date_str: str, fmt: str) hutool.core.date.DateTime¶
根据格式字符串解析创建 DateTime。
- 参数:
date_str – 日期字符串
fmt – 格式模式,如 “yyyy-MM-dd HH:mm:ss”
- 返回:
DateTime 对象
- classmethod now_utc() hutool.core.date.DateTime¶
获取 UTC 当前时间的 DateTime。
- 返回:
DateTime 对象
- classmethod of_epoch(epoch: Union[int, float], is_millis: bool = True) hutool.core.date.DateTime¶
根据时间戳创建 DateTime。
- 参数:
epoch – 时间戳
is_millis – 是否为毫秒时间戳
- 返回:
DateTime 对象
- is_weekend() bool¶
是否为周末。
- 返回:
周六或周日返回 True
- is_am() bool¶
是否为上午。
- 返回:
上午返回 True
- is_pm() bool¶
是否为下午。
- 返回:
下午返回 True
- is_past() bool¶
是否为过去时间。
- 返回:
过去时间返回 True
- is_future() bool¶
是否为未来时间。
- 返回:
未来时间返回 True
- is_before(other: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断是否在指定时间之前。
- 参数:
other – 比较对象
- 返回:
是否在前
- is_after(other: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断是否在指定时间之后。
- 参数:
other – 比较对象
- 返回:
是否在后
- is_between(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断是否在指定时间范围内(含边界)。
- 参数:
start – 起始时间
end – 结束时间
- 返回:
是否在范围内
- is_leap_year() bool¶
是否为闰年。
- 返回:
闰年返回 True
- is_last_day_of_month() bool¶
是否为当月最后一天。
- 返回:
最后一天返回 True
- length_of_month() int¶
获取当月天数。
- 返回:
天数
- length_of_year() int¶
获取当年天数。
- 返回:
天数
- offset_day(days: int) hutool.core.date.DateTime¶
按天偏移。
- 参数:
days – 偏移天数
- 返回:
新的 DateTime
- offset_week(weeks: int) hutool.core.date.DateTime¶
按周偏移。
- 参数:
weeks – 偏移周数
- 返回:
新的 DateTime
- offset_month(months: int) hutool.core.date.DateTime¶
按月偏移。
- 参数:
months – 偏移月数
- 返回:
新的 DateTime
- offset_year(years: int) hutool.core.date.DateTime¶
按年偏移。
- 参数:
years – 偏移年数
- 返回:
新的 DateTime
- begin_of_second() hutool.core.date.DateTime¶
获取秒的开始(毫秒归零)。
- 返回:
DateTime
- end_of_second() hutool.core.date.DateTime¶
获取秒的结束。
- 返回:
DateTime
- begin_of_hour() hutool.core.date.DateTime¶
获取小时的开始。
- 返回:
DateTime
- end_of_hour() hutool.core.date.DateTime¶
获取小时的结束。
- 返回:
DateTime
- begin_of_minute() hutool.core.date.DateTime¶
获取分钟的开始。
- 返回:
DateTime
- end_of_minute() hutool.core.date.DateTime¶
获取分钟的结束。
- 返回:
DateTime
- format(fmt: str = 'YYYY-MM-DD HH:mm:ss') str¶
格式化为字符串。
- 参数:
fmt – pendulum 格式模式
- 返回:
格式化字符串
- to_local_datetime_str() str¶
转换为本地日期时间字符串 “YYYY-MM-DD HH:mm:ss”。
- 返回:
日期时间字符串
- with_timezone(tz: str) hutool.core.date.DateTime¶
转换时区。
- 参数:
tz – 时区名称,如 “UTC”, “Asia/Shanghai”
- 返回:
新的 DateTime
- timezone_name() Optional[str]¶
获取时区名称。
- 返回:
时区名称字符串
- hutool.core.date._to_pendulum(dt: Union[hutool.core.date.DateTime, datetime.datetime, pendulum.DateTime]) pendulum.DateTime¶
将各种日期类型统一转换为 pendulum.DateTime。
- 参数:
dt – DateTime、datetime 或 pendulum.DateTime 对象。
- 返回:
pendulum.DateTime 对象。
- class hutool.core.date.DateUtil¶
日期工具类,对应 Java cn.hutool.core.date.DateUtil。
提供静态方法,用于日期的创建、格式化、解析、偏移、比较、时间差计算等操作。
- NORM_DATETIME_PATTERN: str = 'YYYY-MM-DD HH:mm:ss'¶
标准日期时间格式:yyyy-MM-dd HH:mm:ss
- NORM_DATE_PATTERN: str = 'YYYY-MM-DD'¶
标准日期格式:yyyy-MM-dd
- NORM_TIME_PATTERN: str = 'HH:mm:ss'¶
标准时间格式:HH:mm:ss
- ISO8601_PATTERN: str = 'YYYY-MM-DDTHH:mm:ssZ'¶
ISO 8601 格式
- static date() hutool.core.date.DateTime¶
获取当前日期时间。
- 返回:
当前时间的 DateTime 对象。
- static now() str¶
获取当前时间的标准格式字符串(yyyy-MM-dd HH:mm:ss)。
- 返回:
当前时间字符串。
- static today() str¶
获取今天日期的标准格式字符串(yyyy-MM-dd)。
- 返回:
今天日期字符串。
- static current(is_millis: bool = True) int¶
获取当前时间戳。
- 参数:
is_millis – True 返回毫秒时间戳,False 返回秒级时间戳。
- 返回:
当前时间戳。
- static current_seconds() int¶
获取当前秒级时间戳。
- 返回:
秒级时间戳。
- static format(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], fmt: str = 'YYYY-MM-DD HH:mm:ss') str¶
格式化日期时间。
- 参数:
dt – 日期时间对象。
fmt – 格式化模式(使用 pendulum 占位符)。
- 返回:
格式化后的字符串。
- static format_date_time(dt: Union[hutool.core.date.DateTime, datetime.datetime]) str¶
格式化为标准日期时间字符串(yyyy-MM-dd HH:mm:ss)。
- 参数:
dt – 日期时间对象。
- 返回:
格式化后的字符串。
- static format_date(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) str¶
格式化为标准日期字符串(yyyy-MM-dd)。
- 参数:
dt – 日期时间对象。
- 返回:
格式化后的字符串。
- static format_time(dt: Union[hutool.core.date.DateTime, datetime.datetime]) str¶
格式化为标准时间字符串(HH:mm:ss)。
- 参数:
dt – 日期时间对象。
- 返回:
格式化后的字符串。
- static parse(date_str: str, fmt: Optional[str] = None) hutool.core.date.DateTime¶
解析日期时间字符串。
- 参数:
date_str – 日期时间字符串。
fmt – 格式化模式,为 None 时自动识别。
- 返回:
DateTime 对象。
- static parse_date_time(date_str: str) hutool.core.date.DateTime¶
解析标准日期时间字符串(yyyy-MM-dd HH:mm:ss)。
- 参数:
date_str – 日期时间字符串,如 “2023-10-01 12:30:00”。
- 返回:
DateTime 对象。
- static parse_date(date_str: str) hutool.core.date.DateTime¶
解析标准日期字符串(yyyy-MM-dd)。
- 参数:
date_str – 日期字符串,如 “2023-10-01”。
- 返回:
DateTime 对象。
- static parse_time(time_str: str) hutool.core.date.DateTime¶
解析标准时间字符串(HH:mm:ss),日期部分取今天。
- 参数:
time_str – 时间字符串,如 “12:30:00”。
- 返回:
DateTime 对象。
- static parse_iso8601(iso_str: str) hutool.core.date.DateTime¶
解析 ISO 8601 格式字符串。
- 参数:
iso_str – ISO 8601 格式字符串,如 “2023-10-01T12:30:00+08:00”。
- 返回:
DateTime 对象。
- static year(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取年份。
- 参数:
dt – 日期时间对象。
- 返回:
年份。
- static month(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取月份(1-12)。
- 参数:
dt – 日期时间对象。
- 返回:
月份。
- static day_of_month(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取日(1-31)。
- 参数:
dt – 日期时间对象。
- 返回:
日。
- static hour(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取小时(0-23)。
- 参数:
dt – 日期时间对象。
- 返回:
小时。
- static minute(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取分钟(0-59)。
- 参数:
dt – 日期时间对象。
- 返回:
分钟。
- static second(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取秒(0-59)。
- 参数:
dt – 日期时间对象。
- 返回:
秒。
- static day_of_week(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取星期几(ISO 标准:1=周一, 7=周日)。
- 参数:
dt – 日期时间对象。
- 返回:
星期几(1-7)。
- static quarter(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取季度(1-4)。
- 参数:
dt – 日期时间对象。
- 返回:
季度。
- static week_of_year(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取一年中的第几周(ISO 标准)。
- 参数:
dt – 日期时间对象。
- 返回:
周数。
- static is_weekend(dt: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断是否为周末(周六或周日)。
- 参数:
dt – 日期时间对象。
- 返回:
是否为周末。
- static is_am(dt: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断是否为上午。
- 参数:
dt – 日期时间对象。
- 返回:
是否为上午。
- static is_pm(dt: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断是否为下午。
- 参数:
dt – 日期时间对象。
- 返回:
是否为下午。
- static offset_day(dt: Union[hutool.core.date.DateTime, datetime.datetime], n: int) hutool.core.date.DateTime¶
偏移天数。
- 参数:
dt – 日期时间对象。
n – 偏移天数,正数向后,负数向前。
- 返回:
偏移后的 DateTime 对象。
- static offset_week(dt: Union[hutool.core.date.DateTime, datetime.datetime], n: int) hutool.core.date.DateTime¶
偏移周数。
- 参数:
dt – 日期时间对象。
n – 偏移周数。
- 返回:
偏移后的 DateTime 对象。
- static offset_month(dt: Union[hutool.core.date.DateTime, datetime.datetime], n: int) hutool.core.date.DateTime¶
偏移月数。
- 参数:
dt – 日期时间对象。
n – 偏移月数。
- 返回:
偏移后的 DateTime 对象。
- static offset_year(dt: Union[hutool.core.date.DateTime, datetime.datetime], n: int) hutool.core.date.DateTime¶
偏移年数。
- 参数:
dt – 日期时间对象。
n – 偏移年数。
- 返回:
偏移后的 DateTime 对象。
- static offset_hour(dt: Union[hutool.core.date.DateTime, datetime.datetime], n: int) hutool.core.date.DateTime¶
偏移小时数。
- 参数:
dt – 日期时间对象。
n – 偏移小时数。
- 返回:
偏移后的 DateTime 对象。
- static offset_minute(dt: Union[hutool.core.date.DateTime, datetime.datetime], n: int) hutool.core.date.DateTime¶
偏移分钟数。
- 参数:
dt – 日期时间对象。
n – 偏移分钟数。
- 返回:
偏移后的 DateTime 对象。
- static offset_second(dt: Union[hutool.core.date.DateTime, datetime.datetime], n: int) hutool.core.date.DateTime¶
偏移秒数。
- 参数:
dt – 日期时间对象。
n – 偏移秒数。
- 返回:
偏移后的 DateTime 对象。
- static yesterday() hutool.core.date.DateTime¶
获取昨天的日期。
- 返回:
昨天的 DateTime 对象。
- static tomorrow() hutool.core.date.DateTime¶
获取明天的日期。
- 返回:
明天的 DateTime 对象。
- static last_week() hutool.core.date.DateTime¶
获取上周的今天。
- 返回:
上周今天的 DateTime 对象。
- static next_week() hutool.core.date.DateTime¶
获取下周的今天。
- 返回:
下周今天的 DateTime 对象。
- static last_month() hutool.core.date.DateTime¶
获取上月的今天。
- 返回:
上月今天的 DateTime 对象。
- static next_month() hutool.core.date.DateTime¶
获取下月的今天。
- 返回:
下月今天的 DateTime 对象。
- static begin_of_day(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一天的开始时间(00:00:00)。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
当天开始的 DateTime 对象。
- static end_of_day(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一天的结束时间(23:59:59.999999)。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
当天结束的 DateTime 对象。
- static begin_of_week(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一周的开始时间(周一 00:00:00)。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
本周开始的 DateTime 对象。
- static end_of_week(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一周的结束时间(周日 23:59:59.999999)。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
本周结束的 DateTime 对象。
- static begin_of_month(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一月的开始时间(1号 00:00:00)。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
本月开始的 DateTime 对象。
- static end_of_month(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一月的结束时间(月末 23:59:59.999999)。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
本月结束的 DateTime 对象。
- static begin_of_quarter(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一季度的开始时间。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
本季度开始的 DateTime 对象。
- static end_of_quarter(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一季度的结束时间。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
本季度结束的 DateTime 对象。
- static begin_of_year(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一年的开始时间(1月1日 00:00:00)。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
本年开始的 DateTime 对象。
- static end_of_year(dt: Union[hutool.core.date.DateTime, datetime.datetime, None] = None) hutool.core.date.DateTime¶
获取一年的结束时间(12月31日 23:59:59.999999)。
- 参数:
dt – 日期时间对象,为 None 时取当前时间。
- 返回:
本年结束的 DateTime 对象。
- static between(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime], unit: str = 'ms') int¶
计算两个时间之间的差值。
- 参数:
start – 起始时间。
end – 结束时间。
unit – 单位,可选值:ms(毫秒)、s(秒)、min(分钟)、hour(小时)、 day(天)、week(周)、month(月)、year(年)。
- 返回:
时间差(整数)。
- static between_ms(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
计算两个时间之间的毫秒差。
- 参数:
start – 起始时间。
end – 结束时间。
- 返回:
毫秒差。
- static between_day(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime], is_reset: bool = False) int¶
计算两个时间之间的天数差。
- 参数:
start – 起始时间。
end – 结束时间。
is_reset – 是否重置时间为当天开始(忽略时分秒)。
- 返回:
天数差。
- static between_week(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime], is_reset: bool = False) int¶
计算两个时间之间的周数差。
- 参数:
start – 起始时间。
end – 结束时间。
is_reset – 是否重置时间为当天开始。
- 返回:
周数差。
- static between_month(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime], is_reset: bool = False) int¶
计算两个时间之间的月数差。
- 参数:
start – 起始时间。
end – 结束时间。
is_reset – 是否重置时间为当月开始。
- 返回:
月数差。
- static between_year(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime], is_reset: bool = False) int¶
计算两个时间之间的年数差。
- 参数:
start – 起始时间。
end – 结束时间。
is_reset – 是否重置时间为当年开始。
- 返回:
年数差。
- static format_between(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime], level: str = 'ms') str¶
格式化时间差为中文可读字符串。
根据 level 参数决定精度: - “ms”: 毫秒级,如 “3天2小时5分10秒123毫秒” - “s”: 秒级, 如 “3天2小时5分10秒” - “min”: 分钟级, 如 “3天2小时5分” - “hour”: 小时级, 如 “3天2小时” - “day”: 天级, 如 “3天”
- 参数:
start – 起始时间。
end – 结束时间。
level – 精度级别。
- 返回:
中文格式的时间差字符串。
- static is_same_day(dt1: Union[hutool.core.date.DateTime, datetime.datetime], dt2: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断两个时间是否为同一天。
- 参数:
dt1 – 第一个时间。
dt2 – 第二个时间。
- 返回:
是否为同一天。
- static is_same_time(dt1: Union[hutool.core.date.DateTime, datetime.datetime], dt2: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断两个时间是否为同一时刻。
- 参数:
dt1 – 第一个时间。
dt2 – 第二个时间。
- 返回:
是否为同一时刻。
- static is_in(dt: Union[hutool.core.date.DateTime, datetime.datetime], start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断时间是否在指定范围内 [start, end](含边界)。
- 参数:
dt – 待判断的时间。
start – 范围起始时间。
end – 范围结束时间。
- 返回:
是否在范围内。
- static is_leap_year(year: int) bool¶
判断是否为闰年。
- 参数:
year – 年份。
- 返回:
是否为闰年。
- static timer() int¶
返回当前毫秒时间戳(用于计时)。
- 返回:
当前毫秒时间戳。
- static spend_ms(pre_time: int) int¶
计算从 pre_time 到当前的毫秒差。
- 参数:
pre_time – 之前记录的毫秒时间戳(通过 timer() 获取)。
- 返回:
经过的毫秒数。
- static date_trunc(trunc_type: str, dt: Union[datetime.datetime, datetime.date]) Union[datetime.datetime, datetime.date]¶
截断日期到指定精度。
受 PostgreSQL 的
date_trunc函数启发。 支持的截断类型:year、quarter、month、week、day、hour、minute、second。- 参数:
trunc_type – 截断类型
dt – 日期或日期时间对象
- 返回:
截断后的日期/日期时间对象(类型与输入一致)
- 抛出:
ValueError – 不支持的截断类型时
- static get_week(dt: Union[datetime.datetime, datetime.date])¶
获取日期所在年周号。
返回
(week_number, year)元组,其中week_number为周号,year为该周所属的年份(跨年时可能与dt.year不同)。- 参数:
dt – 日期或日期时间对象
- 返回:
(week_number, year)元组
- static get_monthspan(dt: Union[datetime.datetime, datetime.date])¶
获取日期所在月的首日和末日。
- 参数:
dt – 日期或日期时间对象
- 返回:
(首日, 末日)元组,类型与输入一致
- static get_weekspan(dt: Union[datetime.datetime, datetime.date])¶
获取日期所在周的周一和周日。
- 参数:
dt – 日期或日期时间对象
- 返回:
(周一, 周日)元组,类型与输入一致
- static get_quarterspan(dt: Union[datetime.datetime, datetime.date])¶
获取日期所在季度的首日和末日。
- 参数:
dt – 日期或日期时间对象
- 返回:
(首日, 末日)元组,类型与输入一致
- static get_yearspan(dt: Union[datetime.datetime, datetime.date])¶
获取日期所在年的首日和末日。
- 参数:
dt – 日期或日期时间对象
- 返回:
(首日, 末日)元组,类型与输入一致
- static month_add(dt: Union[datetime.datetime, datetime.date], months: int) Union[datetime.datetime, datetime.date]¶
日期加减指定月数。
自动处理月末溢出(如 1月31日 + 1月 = 2月28日)。
- 参数:
dt – 日期或日期时间对象
months – 加减月数(正数为加,负数为减)
- 返回:
新的日期/日期时间对象
- static rfc3339_date(dt: Optional[datetime.datetime] = None) str¶
格式化为 RFC 3339 日期字符串。
例如
"2024-01-15T08:30:00Z"。- 参数:
dt – 日期时间对象,为 None 时使用当前时间
- 返回:
RFC 3339 格式字符串
- static rfc3339_date_parse(date_str: str) datetime.datetime¶
解析 RFC 3339 日期字符串为 datetime 对象。
- 参数:
date_str – RFC 3339 格式字符串,如
"2024-01-15T08:30:00Z"- 返回:
datetime 对象
- 抛出:
ValueError – 格式不合法时
- static rfc2616_date(dt: Optional[datetime.datetime] = None) str¶
格式化为 RFC 2616 (HTTP) 日期字符串。
例如
"Mon, 15 Jan 2024 08:30:00 GMT"。- 参数:
dt – 日期时间对象,为 None 时使用当前时间
- 返回:
RFC 2616 格式字符串
- static rfc2616_date_parse(date_str: str) datetime.datetime¶
解析 RFC 2616 (HTTP) 日期字符串为 datetime 对象。
- 参数:
date_str – RFC 2616 格式字符串
- 返回:
datetime 对象
- 抛出:
ValueError – 格式不合法时
- static age_by_birthday(birthday: Union[str, datetime.date, datetime.datetime]) int¶
根据生日计算年龄。
- 参数:
birthday – 生日,支持 str(
YYYY-MM-DD或YYYYMMDD)、date、datetime- 返回:
年龄(周岁)
- 抛出:
ValueError – 无法解析生日时
- static is_same_month(dt1: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], dt2: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) bool¶
判断两个日期是否在同一月(同年同月)。
- 参数:
dt1 – 第一个日期
dt2 – 第二个日期
- 返回:
是否在同一月
- static is_same_week(dt1: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], dt2: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) bool¶
判断两个日期是否在同一周(ISO 周,周一为一周起始)。
- 参数:
dt1 – 第一个日期
dt2 – 第二个日期
- 返回:
是否在同一周
- static time_ago(timestamp: Union[int, float]) str¶
将时间戳转换为人类可读的相对时间描述。
例如
"3天前"、"2小时前"。- 参数:
timestamp – Unix 时间戳(秒级)
- 返回:
中文相对时间描述
>>> DateUtil.time_ago(time.time()) # 刚刚 '刚刚'
- static iso_timestamp() str¶
获取当前 ISO 8601 格式的时间戳字符串。
格式为
YYYY-MM-DDTHH:MM:SS.mmmZ。- 返回:
ISO 8601 时间戳字符串
>>> DateUtil.iso_timestamp() '2024-01-01T12:00:00.000Z'
- static convert_to_date(value) Optional[datetime.date]¶
将各种日期格式统一转换为
date对象。支持:
datetime、date、str``(ISO 格式或 ``YYYYMMDD)。- 参数:
value – 待转换的值
- 返回:
date 对象,输入为 None/空时返回 None
- 抛出:
ValueError – 无法识别的格式时
- static convert_to_datetime(value) Optional[datetime.datetime]¶
将各种日期格式统一转换为
datetime对象。支持:
datetime、date、str(多种 ISO 格式)。- 参数:
value – 待转换的值
- 返回:
datetime 对象,输入为 None/空时返回 None
- 抛出:
ValueError – 无法识别的格式时
- static is_last_day_of_month(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) bool¶
判断是否为当月最后一天。
- 参数:
dt – 日期
- 返回:
是否月末最后一天
- static is_expired(check_date: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], begin: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], end: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) bool¶
判断日期是否在有效期外(早于 begin 或晚于 end)。
- 参数:
check_date – 待检查的日期
begin – 有效期开始(含)
end – 有效期结束(含)
- 返回:
是否过期
- static is_overlap(begin1: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], end1: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], begin2: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], end2: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) bool¶
判断两个时间段是否重叠。
- 参数:
begin1 – 第一段开始
end1 – 第一段结束
begin2 – 第二段开始
end2 – 第二段结束
- 返回:
是否重叠
- static is_between(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], begin: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], end: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) bool¶
判断日期是否在范围内(含边界)。
- 参数:
dt – 待检查的日期
begin – 开始(含)
end – 结束(含)
- 返回:
是否在范围内
- static day_of_year(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) int¶
获取年内第几天(1~366)。
- 参数:
dt – 日期
- 返回:
年内第几天
- static length_of_month(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) int¶
获取当月天数。
- 参数:
dt – 日期
- 返回:
当月天数
- static length_of_year(year: int) int¶
获取当年天数。
- 参数:
year – 年份
- 返回:
当年天数(365 或 366)
- static millisecond(dt: Union[hutool.core.date.DateTime, datetime.datetime]) int¶
获取毫秒部分。
- 参数:
dt – 日期时间
- 返回:
毫秒数
- static get_zodiac(month: int, day: int) str¶
获取星座。
- 参数:
month – 月份(1-12)
day – 日期(1-31)
- 返回:
星座名称
- static get_chinese_zodiac(year: int) str¶
获取生肖。
- 参数:
year – 年份
- 返回:
生肖名称
- static compare(d1: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date, None], d2: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date, None]) int¶
null-safe 的日期比较。
- 参数:
d1 – 日期1
d2 – 日期2
- 返回:
负数/0/正数
- static convert_timezone(dt: Union[hutool.core.date.DateTime, datetime.datetime], from_tz: str, to_tz: str) datetime.datetime¶
时区转换。
- 参数:
dt – 日期时间
from_tz – 源时区,如 “Asia/Shanghai”
to_tz – 目标时区,如 “US/Eastern”
- 返回:
转换后的 datetime
- static format_chinese_date(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) str¶
中文日期格式,如 “2024年1月15日”。
- 参数:
dt – 日期
- 返回:
中文日期字符串
- static _to_pendulum(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date])¶
内部辅助:转为 pendulum 对象。
- static this_year() int¶
获取当前年份。
- 返回:
当前年份
- static this_month() int¶
获取当前月份(1~12)。
- 返回:
当前月份
- static this_week_of_year() int¶
获取当前是本年第几周。
- 返回:
周数
- static this_week_of_month() int¶
获取当前是本月第几周。
- 返回:
周数
- static this_day_of_month() int¶
获取当前是本月第几天。
- 返回:
天数
- static this_day_of_week() int¶
获取当前是本周第几天(1=周一,7=周日)。
- 返回:
天数
- static this_hour() int¶
获取当前小时(0~23)。
- 返回:
小时
- static this_minute() int¶
获取当前分钟(0~59)。
- 返回:
分钟
- static this_second() int¶
获取当前秒(0~59)。
- 返回:
秒
- static this_millisecond() int¶
获取当前毫秒(0~999)。
- 返回:
毫秒
- static time_to_second(time_str: str) int¶
将 HH:mm:ss 格式的时间字符串转为秒数。
- 参数:
time_str – 时间字符串,如 “01:30:00”
- 返回:
总秒数
- static second_to_time(seconds: int) str¶
将秒数转为 HH:mm:ss 格式。
- 参数:
seconds – 总秒数
- 返回:
HH:mm:ss 格式字符串
- static age_of_now(birth: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date, str]) int¶
计算到当前时间的年龄。
- 参数:
birth – 出生日期
- 返回:
年龄
- static age(birth: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], now: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) int¶
计算两个日期之间的年龄。
- 参数:
birth – 出生日期
now – 当前日期
- 返回:
年龄
- static truncate(dt: Union[hutool.core.date.DateTime, datetime.datetime], field: str = 'day') datetime.datetime¶
截断日期时间到指定字段。
- 参数:
dt – 日期时间
field – 截断字段,支持 “year”, “month”, “day”, “hour”, “minute”, “second”
- 返回:
截断后的 datetime
- static range_contains(start: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime], dt: Union[hutool.core.date.DateTime, datetime.datetime]) bool¶
判断日期是否在范围内(含边界)。
- 参数:
start – 起始日期
end – 结束日期
dt – 待判断日期
- 返回:
是否在范围内
- static year_and_quarter(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) str¶
返回年份和季度,如 “20241” 表示 2024 年第 1 季度。
- 参数:
dt – 日期
- 返回:
年份+季度字符串
- static create_stop_watch(name: str = '') hutool.core.text.StopWatch¶
创建秒表计时器。
- 参数:
name – 秒表名称
- 返回:
StopWatch 实例
- static nanos_to_millis(nanos: int) float¶
纳秒转毫秒。
- 参数:
nanos – 纳秒
- 返回:
毫秒
- static nanos_to_seconds(nanos: int) float¶
纳秒转秒。
- 参数:
nanos – 纳秒
- 返回:
秒
- static format_between_ms(between_ms: int, level: str = 'millisecond') str¶
格式化时间间隔(毫秒)。
- 参数:
between_ms – 毫秒间隔
level – 精度级别,”day”, “hour”, “minute”, “second”, “millisecond”
- 返回:
格式化后的间隔字符串
- static format_local_datetime(dt: Union[hutool.core.date.DateTime, datetime.datetime, pendulum.DateTime, None] = None) str¶
格式化为本地日期时间字符串 “YYYY-MM-DD HH:mm:ss”。
- 参数:
dt – 日期时间,默认当前时间
- 返回:
格式化字符串
- static parse_local_datetime(s: str) datetime.datetime¶
解析本地日期时间字符串 “YYYY-MM-DD HH:mm:ss”。
- 参数:
s – 日期时间字符串
- 返回:
datetime 对象
- static parse_utc(s: str) datetime.datetime¶
解析 UTC 日期时间字符串。
- 参数:
s – UTC 日期时间字符串,如 “2024-01-15T10:30:00Z”
- 返回:
datetime 对象
- static parse_cst(s: str) datetime.datetime¶
解析 CST(中国标准时间 UTC+8)日期时间字符串。
- 参数:
s – CST 日期时间字符串
- 返回:
datetime 对象(已转换为本地时间)
- static parse_rfc2822(s: str) datetime.datetime¶
解析 RFC 2822 日期字符串,如 ‘Mon, 15 Jan 2024 10:30:00 +0800’。
- 参数:
s – RFC 2822 日期字符串
- 返回:
datetime 对象
- static round(dt: Union[hutool.core.date.DateTime, datetime.datetime], field: str = 'day') datetime.datetime¶
四舍五入日期时间到指定字段。
超过字段中间值时向上舍入,否则截断。 例如 round(dt, “hour”) 在分钟 >= 30 时进位。
- 参数:
dt – 日期时间
field – 舍入字段,支持 “year”, “month”, “day”, “hour”, “minute”
- 返回:
舍入后的 datetime
- static ceiling(dt: Union[hutool.core.date.DateTime, datetime.datetime], field: str = 'day') datetime.datetime¶
天花板舍入(向上取整)日期时间到指定字段。
如果已经是截断值则不变,否则向上进位。
- 参数:
dt – 日期时间
field – 字段,支持 “year”, “month”, “day”, “hour”, “minute”, “second”
- 返回:
天花板后的 datetime
- static begin_of_second(dt: Union[hutool.core.date.DateTime, datetime.datetime, pendulum.DateTime, None] = None) datetime.datetime¶
获取秒的开始(毫秒归零)。
- 参数:
dt – 日期时间
- 返回:
秒开始的 datetime
- static end_of_second(dt: Union[hutool.core.date.DateTime, datetime.datetime, pendulum.DateTime, None] = None) datetime.datetime¶
获取秒的结束(毫秒设为最大值)。
- 参数:
dt – 日期时间
- 返回:
秒结束的 datetime
- static begin_of_hour(dt: Union[hutool.core.date.DateTime, datetime.datetime, pendulum.DateTime, None] = None) datetime.datetime¶
获取小时的开始。
- 参数:
dt – 日期时间
- 返回:
小时开始的 datetime
- static end_of_hour(dt: Union[hutool.core.date.DateTime, datetime.datetime, pendulum.DateTime, None] = None) datetime.datetime¶
获取小时的结束。
- 参数:
dt – 日期时间
- 返回:
小时结束的 datetime
- static begin_of_minute(dt: Union[hutool.core.date.DateTime, datetime.datetime, pendulum.DateTime, None] = None) datetime.datetime¶
获取分钟的开始。
- 参数:
dt – 日期时间
- 返回:
分钟开始的 datetime
- static end_of_minute(dt: Union[hutool.core.date.DateTime, datetime.datetime, pendulum.DateTime, None] = None) datetime.datetime¶
获取分钟的结束。
- 参数:
dt – 日期时间
- 返回:
分钟结束的 datetime
- static offset(dt: Union[hutool.core.date.DateTime, datetime.datetime], field: str, amount: int) datetime.datetime¶
通用日期偏移。
- 参数:
dt – 日期时间
field – 偏移字段,支持 “year”, “month”, “week”, “day”, “hour”, “minute”, “second”
amount – 偏移量(正数向未来,负数向过去)
- 返回:
偏移后的 datetime
- static range(start: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], end: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], unit: str = 'day') List[datetime.datetime]¶
生成日期范围列表。
- 参数:
start – 起始日期
end – 结束日期(不含)
unit – 步进单位,”day”, “week”, “month”
- 返回:
日期列表
- static range_to_list(start: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], end: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], unit: str = 'day') List[datetime.datetime]¶
生成日期范围列表(含结束日期)。
- 参数:
start – 起始日期
end – 结束日期(含)
unit – 步进单位,”day”, “week”, “month”
- 返回:
日期列表
- static week_of_month(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) int¶
获取指定日期在当月的第几周(从 1 开始)。
- 参数:
dt – 日期
- 返回:
月内周序号(1-based)
- static get_last_day_of_month(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) int¶
获取指定日期所在月的最后一天(28/29/30/31)。
- 参数:
dt – 日期
- 返回:
月末日
- static new_simple_format(pattern: str)¶
创建一个简单日期格式化函数。
返回一个可调用对象,接受 datetime 并输出格式化字符串。
- 参数:
pattern – 日期格式模式(如 “yyyy-MM-dd”)
- 返回:
格式化可调用对象
备注
Java
SimpleDateFormat模式会自动转换为 Python strftime 格式。
- static offset_millisecond(dt: Union[hutool.core.date.DateTime, datetime.datetime], n: int) hutool.core.date.DateTime¶
偏移毫秒。
- 参数:
dt – 日期时间
n – 毫秒数(正数向未来偏移,负数向过去偏移)
- 返回:
偏移后的 DateTime
- static parse_time_today(time_str: str, fmt: str = '%H:%M:%S') hutool.core.date.DateTime¶
解析时间字符串,日期取今日。
例如
"12:30:00"→ 今日 12:30:00。- 参数:
time_str – 时间字符串
fmt – 格式,默认 “%H:%M:%S”
- 返回:
DateTime(今日 + 指定时间)
- static range_func(start: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], end: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], unit: str = 'day') Generator[datetime.datetime, None, None]¶
生成日期范围生成器(不含结束日期)。
- 参数:
start – 起始日期
end – 结束日期(不含)
unit – 步进单位,”day”, “week”, “month”
- 返回:
日期生成器
- static range_consume(start: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], end: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date], unit: str = 'day', consumer: Optional[Callable[[datetime.datetime], None]] = None) List[datetime.datetime]¶
遍历日期范围并消费(回调)。
- 参数:
start – 起始日期
end – 结束日期(不含)
unit – 步进单位
consumer – 回调函数(每步调用一次)
- 返回:
日期列表
- static range_not_contains(range1: Tuple[Union[hutool.core.date.DateTime, datetime.datetime], Union[hutool.core.date.DateTime, datetime.datetime]], range2: Tuple[Union[hutool.core.date.DateTime, datetime.datetime], Union[hutool.core.date.DateTime, datetime.datetime]]) bool¶
判断两个日期范围是否不相交。
- 参数:
range1 – 第一个范围 (start, end)
range2 – 第二个范围 (start, end)
- 返回:
是否不相交
- static spend_nt(start_time: int) int¶
计时,返回从 start_time 到当前时间的毫秒差。
- 参数:
start_time – 起始时间戳(纳秒级,由 time.perf_counter_ns() 获得)
- 返回:
经过的毫秒数
- static to_int_second(dt: Union[hutool.core.date.DateTime, datetime.datetime, datetime.date]) int¶
将日期转换为秒级时间戳。
- 参数:
dt – 日期时间
- 返回:
秒级时间戳
- static format_http_date(dt: Optional[datetime.datetime] = None) str¶
格式化为 HTTP 日期字符串(RFC 7231 / RFC 2616)。
例如
"Mon, 16 Jun 2026 12:00:00 GMT"。- 参数:
dt – 日期时间,默认当前时间
- 返回:
HTTP 日期字符串
- static format_between_enhanced(begin: Union[hutool.core.date.DateTime, datetime.datetime], end: Union[hutool.core.date.DateTime, datetime.datetime], level: str = 'millisecond') str¶
格式化两个日期之间的间隔。
增强版 format_between,支持更多级别。
- 参数:
begin – 起始时间
end – 结束时间
level – 精度级别(”millisecond”/”second”/”minute”/”hour”/”day”)
- 返回:
格式化的时间间隔字符串
- static convert_timezone_enhanced(dt: Union[hutool.core.date.DateTime, datetime.datetime], from_tz: str, to_tz: str) datetime.datetime¶
时区转换(增强版,支持字符串时区名和 ZoneInfo)。
- 参数:
dt – 日期时间
from_tz – 源时区
to_tz – 目标时区
- 返回:
转换后的 datetime
- static today_date() datetime.date¶
获取今日 date 对象。
与
today()``(返回字符串)不同,本方法返回 ``date对象。- 返回:
今日 date 对象
- static yesterday_date() datetime.date¶
获取昨日 date 对象。
- 返回:
昨日 date 对象
- static tomorrow_date() datetime.date¶
获取明日 date 对象。
- 返回:
明日 date 对象
- static week_start(dt: Optional[Union[datetime.datetime, datetime.date]] = None) datetime.date¶
获取本周一日期。
- 参数:
dt – 参考日期,默认为今日
- 返回:
本周一 date 对象
- static week_end(dt: Optional[Union[datetime.datetime, datetime.date]] = None) datetime.date¶
获取本周日日期。
- 参数:
dt – 参考日期,默认为今日
- 返回:
本周日 date 对象
- static day_start(dt: Optional[Union[datetime.datetime, datetime.date]] = None) datetime.datetime¶
获取当天 00:00:00。
- 参数:
dt – 参考日期,默认为今日
- 返回:
当天 00:00:00 的 datetime 对象
- static day_end(dt: Optional[Union[datetime.datetime, datetime.date]] = None) datetime.datetime¶
获取当天 23:59:59.999999。
- 参数:
dt – 参考日期,默认为今日
- 返回:
当天 23:59:59.999999 的 datetime 对象
- static month_start(dt: Optional[Union[datetime.datetime, datetime.date]] = None) datetime.date¶
获取本月第一天。
- 参数:
dt – 参考日期,默认为今日
- 返回:
本月第一天 date 对象
- static month_end(dt: Optional[Union[datetime.datetime, datetime.date]] = None) datetime.date¶
获取本月最后一天。
- 参数:
dt – 参考日期,默认为今日
- 返回:
本月最后一天 date 对象
- static is_between_dates(dt: Union[datetime.datetime, datetime.date], start: Union[datetime.datetime, datetime.date], end: Union[datetime.datetime, datetime.date]) bool¶
判断日期是否在两个日期之间(含边界)。
- 参数:
dt – 待判断的日期
start – 起始日期
end – 结束日期
- 返回:
是否在范围内
- static get_weekday_name(dt: Optional[Union[datetime.datetime, datetime.date]] = None, locale: str = 'zh_CN') str¶
获取星期几的名称。
- 参数:
dt – 日期,默认为今日
locale – 语言区域,默认
zh_CN
- 返回:
星期几的名称
- static get_month_name(dt: Optional[Union[datetime.datetime, datetime.date]] = None, locale: str = 'zh_CN') str¶
获取月份名称。
- 参数:
dt – 日期,默认为今日
locale – 语言区域,默认
zh_CN
- 返回:
月份名称
- static get_tertial(dt: Optional[Union[datetime.datetime, datetime.date]] = None) int¶
获取日期所在三期(每期 4 个月,1-3)。
1-4 月 → 1
5-8 月 → 2
9-12 月 → 3
- 参数:
dt – 日期,默认为今日
- 返回:
三期序号(1-3)
- static tertial_add(dt: Union[datetime.datetime, datetime.date], tertials: int) Union[datetime.datetime, datetime.date]¶
日期加减 N 个三期(每期 4 个月)。
- 参数:
dt – 起始日期
tertials – 三期数(可为负数)
- 返回:
目标日期
- static get_tertial_span(dt: Optional[Union[datetime.datetime, datetime.date]] = None) tuple¶
获取三期的起止日期。
- 参数:
dt – 日期,默认为今日
- 返回:
(起始月第一天, 结束月最后一天)元组
- static group_by_day(data: List[tuple]) Dict[datetime.date, list]¶
按日分组聚合
[(datetime, value), ...]。- 参数:
data – 日期-值对列表
- 返回:
按日分组的字典
- static group_by_week(data: List[tuple]) Dict[tuple, list]¶
按周分组聚合
[(datetime, value), ...]。键为
(年, 周序号)元组。- 参数:
data – 日期-值对列表
- 返回:
按周分组的字典
- static group_by_month(data: List[tuple]) Dict[tuple, list]¶
按月分组聚合
[(datetime, value), ...]。键为
(年, 月)元组。- 参数:
data – 日期-值对列表
- 返回:
按月分组的字典
- static group_by_quarter(data: List[tuple]) Dict[tuple, list]¶
按季度分组聚合
[(datetime, value), ...]。键为
(年, 季度)元组,季度为 1-4。- 参数:
data – 日期-值对列表
- 返回:
按季度分组的字典
- static group_by_year(data: List[tuple]) Dict[int, list]¶
按年分组聚合
[(datetime, value), ...]。- 参数:
data – 日期-值对列表
- 返回:
按年分组的字典
- static parse_natural(date_string: str) datetime.datetime¶
解析自然语言日期字符串。
支持三种格式:
标准日期时间:
"2024-01-15 12:30:00"关键字
"now":返回当前时间相对时间增量:基于当前时间偏移,格式为
+/-N{unit}的组合
支持的增量单位:
y— 年(按 365.24 天折算)M— 月(按 30.42 天折算)w— 周d— 天h— 小时m— 分钟s— 秒
- 参数:
date_string – 日期字符串
- 返回:
datetime 对象
- 抛出:
ValueError – 无法解析时
>>> DateUtil.parse_natural("now") # 当前时间 >>> DateUtil.parse_natural("2024-01-15 12:30:00") # 标准格式 >>> DateUtil.parse_natural("+1d") # 明天此时 >>> DateUtil.parse_natural("-2h+30m") # 2小时30分前 >>> DateUtil.parse_natural("+1y-3M+5d") # 1年3月后减5天