导图社区 python datetime模块
这是一篇关于datetime模块的思维导图,主要内容包括:关系,时间类型,对象类型。Python中处理日期和时间的方法,通过详细展示相关的类和函数,为读者提供了一个清晰的知识框架。
编辑于2025-03-14 18:50:23datetime模块
关系:
object
time
timedelta
date
datetime
tzinfo
timezone
时间类型
分类:
感知型(Aware)
数据时间对象的计算、生成物理位置为判断并给定时区
简单型(Naive)
没有时区信息的时间类型
判断:
dt_obj.tzinfo
None
简单型
非None
感知型
dt_obj.tzinfo.utcoffset()
None
简单型
非None
感知型
概要
from datetime import datetime, timezone # 感知型--------------------------------------- re = datetime.now(timezone.utc) print(re) # 2024-11-12 02:40:18.876349+00:00 print(type(re)) # <class 'datetime.datetime'> # dt_obj.tzinfo 不为 None:感知型 print(re.tzinfo) # UTC # dt_obj.tzinfo.utcoffset() 不返回 None:感知型 print(re.utcoffset()) # 0:00:00 # 简单型---------------------------------------- re2 = datetime.now() print(re2.tzinfo) # None print(re2.utcoffset()) # None
对象类型
日期 对象
date
创建:
date()
语法:
date_obj = datetime.date(year, # int 年份(1-9999) month, # int 月份(1-12) day # int 日期(1-31) )
返回:
<class 'datetime.date'>
概要
from datetime import date dd = date(year=23, month=12, day=20) print(dd) # 0023-12-20 print(type(dd)) # <class 'datetime.date'>
操作:
实例 操作
操作
转换
==> 字符串
==> 字符串 (欧美格式)
ctime()
语法:
date_obj.ctime()
返回:
<class 'str'>
格式:
星期 月 日 00:00:00 年
概要
from datetime import date date2 = date(year=2022, month=9, day=21) d = date2.ctime() print(d) # Wed Sep 21 00:00:00 2022 (星期 月 日 00:00:00 年) print(type(d)) # <class 'str'>
==> 字符串 (标准格式)
isoformat()
语法:
date_obj.isoformat()
返回:
<class 'str'>
格式:
2024-01-01
概要
from datetime import date d_obj = date(year= 2024, month= 1, day=1) re = d_obj.isoformat() print(re) # 2024-01-01 print(type(re)) # <class 'str'>
==> 字符串(自定义格式)
strftime()
语法:
date_obj.strftime(format)
参数:
format
格式化符号
年份
%y
两位数(00-99)
%Y
四位数(000-9999)
月份
%m
月份(01-12)
日期
%d
月内日期(0-31)
%j
年内日期(001-366)
星期
%w
(0-6),星期天 =0
%a
简化星期名称
%A
完整星期名称
月份 (英文)
%b
简化月份名称
%B
完整月份名称
其它
%U
年中星期数(00-53)星期天 =0
%W
年中星期数(00-53)星期一 =0
%x
完整日期表示
m/d/y
%X
完整时间表示
H:M:S
%%
%号本身
返回:
<class 'str'>
概要
from datetime import date date2 = date(year=2022, month=9, day=21) d = date2.strftime('%Y年%m月%d') print(d) # 2022年09月21 print(type(d)) # <class 'str'>
__format__()
语法:
date_obj.__format__(format)
参数:
format
返回:
<class 'str'>
概要
from datetime import date date2 = date(year=2022, month=9, day=21) d = date2.__format__('%Y年%m月%d') print(d) # 2022年09月21 print(type(d)) # <class 'str'>
==> ISO日历
isocalendar()
语法:
date_obj.isocalendar()
返回:
<class 'datetime.IsoCalendarDate'>
概要
from datetime import date d_obj = date(year=2024, month=1, day=1) re = d_obj.isocalendar() print(re) # datetime.IsoCalendarDate(year=2024, week=1, weekday=1) print(type(re)) # <class 'datetime.IsoCalendarDate'>
==> 时间元组 (time模块)
timetuple()
语法:
date_obj.timetuple()
返回:
<class 'time.struct_time'>
概要
from datetime import date d_obj = date(year=2024, month=11, day=4) re = d_obj.timetuple() print(re) # time.struct_time(tm_year=2024, tm_mon=11, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=309, tm_isdst=-1) print(type(re)) # <class 'time.struct_time'>
==> 日期戳
toordinal()
语法:
date_obj.toordinal()
返回:
<class 'int'>
概要
from datetime import date date2 = date(year=2024, month=11, day=4) d = date2.toordinal() print(d) # 738419 print(type(d)) # <class 'int'>
==> 星期几
星期一 =1
isoweekday()
语法:
date_obj.isoweekday()
返回:
<class 'int'>
从1开始的周序号
概要
from datetime import date date2 = date(year=2024, month=11, day=4) re = date2.isoweekday() print(re) # 7 星期7 (从1开始的周序号) print(type(re)) # <class 'int'>
星期一 =0
weekday()
语法:
date_obj.weekday()
返回:
<class 'int'>
从0开始的周序号
概要
from datetime import date date2 = date(year=2024, month=11, day=4) re = date2.weekday() print(re) # 0 星期1 (从0开始的周序号) print(type(re)) # <class 'int'>
修改日期
replace()
语法:
date_obj.replace(year=None, # int 年 month=None, # int 月 day=None, # int 日 )
返回:
<class 'datetime.date'>
概要
from datetime import date date2 = date(year=2022, month=9, day=21) d = date2.replace(year=2001,month=1,day=1) print(d) # 2001-01-01 print(type(d)) # <class 'datetime.date'> d = date2.replace(year=2000) print(d) # 2000-09-21 print(type(d)) # <class 'datetime.date'>
运算
加
__add__()
语法:
date_obj_1.__add__(other) # timedelta
date_obj_1 + timedelta
返回:
<class 'datetime.date'>
概要
from datetime import date, timedelta t1 = date(year=2015, month=2, day=2, ) print(t1 + timedelta(days=1)) # 2015-02-03 re = t1.__add__(timedelta(days=1)) print(re) # 2015-02-03 print(type(re)) # <class 'datetime.date'>
减
__sub__()
语法:
date_obj_1.__sub__(other) # timedelta 或 date
date_obj_1 - timedelta 或 date
返回:
date
<class 'datetime.timedelta'>
timedelta
<class 'datetime.date'>
概要
from datetime import date, timedelta t1 = date(year=2015, month=2, day=2, ) t2 = date(year=2015, month=1, day=2, ) re = t1 - timedelta(days=1) print(re) # 22015-02-01 print(type(re)) # <class 'datetime.date'> re = t1.__sub__(t2) print(re) # 31 days, 0:00:00 print(type(re)) # <class 'datetime.date'>
比较
>=
__ge__()
语法:
date_obj_1.__ge__(date_obj_2)
date_obj_1 >= date_obj_2
概要
from datetime import date t1 = date(year=15, month=2, day=2, ) t2 = date(year=14, month=1, day=1, ) print(t1 >= t2) # True re = t1.__ge__(t2) print(re) # True print(type(re)) # <class 'bool'>
>
__gt__()
语法:
date_obj_1.__gt__(date_obj_2)
date_obj_1 > date_obj_2
概要
from datetime import date t1 = date(year=15, month=2, day=2, ) t2 = date(year=14, month=1, day=1, ) print(t1 > t2) # True re = t1.__gt__(t2) print(re) # True print(type(re)) # <class 'bool'>
<=
__le__()
语法:
date_obj_1.__le__(date_obj_2)
date_obj_1 <= date_obj_2
概要
from datetime import date t1 = date(year=15, month=2, day=2, ) t2 = date(year=14, month=1, day=1, ) print(t1 <= t2) # False re = t1.__le__(t2) print(re) # False print(type(re)) # <class 'bool'>
<
__lt__()
语法:
date_obj_1.__lt__(date_obj_2)
date_obj_1 < date_obj_2
概要
from datetime import date t1 = date(year=15, month=2, day=2, ) t2 = date(year=14, month=1, day=1, ) print(t1 < t2) # False re = t1.__lt__(t2) print(re) # False print(type(re)) # <class 'bool'>
==
__eq__()
语法:
date_obj_1.__eq__(date_obj_2)
date_obj_1 == date_obj_2
概要
from datetime import date t1 = date(year=15, month=2, day=2, ) t2 = date(year=14, month=1, day=1, ) print(t1 == t2) # False re = t1.__eq__(t2) print(re) # False print(type(re)) # <class 'bool'>
!=
__ne__()
语法:
date_obj_1.__ne__(date_obj_2)
date_obj_1 != date_obj_2
概要
from datetime import date t1 = date(year=15, month=2, day=2, ) t2 = date(year=14, month=1, day=1, ) print(t1 != t2) # True re = t1.__ne__(t2) print(re) # True print(type(re)) # <class 'bool'>
类 方法
当前日期
today()
语法:
date.today()
返回:
<class 'datetime.date'>
概要
from datetime import date dd = date.today() print(dd) # 2024-11-08 print(type(dd)) # <class 'datetime.date'>
转换
日期戳 ==> 日期类型
fromordinal()
语法:
date.fromordinal(int) # 日期戳(公元1年1月1日的序号=1)
返回:
<class 'datetime.date'>
概要
from datetime import date dd = date.fromordinal(1) print(dd) # 0001-01-01 print(type(dd)) # <class 'datetime.date'>
时间戳 ==> 日期类型
fromtimestamp()
语法:
date.fromtimestamp(timestamp) # float 时间戳
返回:
<class 'datetime.date'>
概要
from datetime import date d = date.fromtimestamp(1606639383) print(d) # 2020-11-29 print(type(d)) # <class 'datetime.date'>
年周天 ==> 日期类型
fromisocalendar()
语法:
date.fromisocalendar(year, # int 年 week, # int 周 day # int 天 )
返回:
<class 'datetime.date'>
概要
from datetime import date dd = date.fromisocalendar(year=2024, week=1, day=1) print(dd) # 2024-01-01 print(type(dd)) # <class 'datetime.date'>
字符串 ==> 日期类型 (ISO格式)
fromisoformat()
语法:
date.fromisoformat(date_string) # str 标准日期字符串 'YYYY-MM-DD'
返回:
<class 'datetime.date'>
概要
from datetime import date d = date.fromisoformat('2019-11-12') print(d) # 2019-11-12 print(type(d)) # <class 'datetime.date'>
属性:
对象 属性
年
year
语法:
date_obj.year
返回:
<class 'int'>
概要
from datetime import date re = date(year=2025, month=1, day=1).year print(re) # 2025 print(type(re)) # <class 'int'>
月
month
语法:
date_obj.month
返回:
<class 'int'>
概要
from datetime import date re = date(year=2025, month=1, day=2).month print(re) # 1 print(type(re)) # <class 'int'>
日
day
语法:
date_obj.day
返回:
<class 'int'>
概要
from datetime import date re = date(year=2025, month=1, day=2).day print(re) # 2 print(type(re)) # <class 'int'>
类 属性
最小日期
min
语法:
date.min
返回:
<class 'datetime.date'>
概要
from datetime import date d = date.min print(d) # 0001-01-01 print(type(d)) # <class 'datetime.date'>
最大日期
max
语法:
date.max
返回:
<class 'datetime.date'>
概要
from datetime import date d = date.max print(d) # 9999-12-31 print(type(d)) # <class 'datetime.date'>
日期最小间隔
resolution
语法:
date.resolution
返回:
<class 'datetime.time'>
概要
from datetime import date d = date.resolution print(d) # 1 day, 0:00:00 print(type(d)) # <class 'datetime.timedelta'>
日期时间 对象
datetime
创建:
datetime()
语法:
datetime_obj = datetime.datetime(year, # int 年(1-9999) mont, # int 月(1-12) day, # int 日(1-31) hour=0, # int 时(1-23) minute=0, # int 分(1-59) second=0, # int 秒(1-59) microsecond=0, # int 微秒(1-999999) tzinfo=None, # tzinfo 时区() fold=0 # int in[0,1] )
参数:
fold
取值范围是 [0, 1]
用于在重复的时间段中消除边界时间歧义
当夏令时结束时回拨时钟或由于政治原因导致当明时区的 UTC 时差减少就会出现重复的时间段。
0
两个时刻 早于 所代表的同一边界时间
1
两个时刻 晚于 所代表的同一边界时间
返回:
<class 'datetime.datetime'>
概要
import datetime dd = datetime.date(year=23, month=12, day=20) print(type(dd)) # <class 'datetime.date'> print(dd) # 0023-12-20
操作:
实例 操作
操作
转换
==> 字符串
==> 字符串 (欧美格式)
ctime()
语法:
datetime_obj.ctime()
返回:
<class 'str'>
格式:
星期 月 日 00:00:00 年
概要
from datetime import datetime, timezone dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone.utc ) re = dt.ctime() print(re) # Tue Nov 12 13:14:15 2024 print(type(re)) # <class 'str'>
==> 字符串 (标准格式)
isoformat()
语法:
datetime_obj.isoformat(sep='T', # str 日期时间之间分隔符 timespec='auto' )
参数:
timespec
输出精度
auto
默认
hours
minutes
seconds
milliseconds
microseconds
返回:
<class 'str'>
格式:
'YYYY-MM-DD HH:MM:SS.mmmmmm+HH:MM'
概要
from datetime import datetime dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone.utc ) re = dt.isoformat(sep=' ', timespec='seconds') print(re) # 2024-11-12 13:14:15+00:00 print(type(re)) # <class 'str'>
==> 字符串 (自定义格式)
strftime()
语法:
datetime_obj.strftime(format) # str 格式
参数:
format
格式化符号
年份
%y
两位数(00-99)
%Y
四位数(000-9999)
月份
%m
月份(01-12)
日期
%d
月内日期(0-31)
%j
年内日期(001-366)
时间
%H
24小时制(0-23)
%p
AM或PM
%I
12小时制(01-12)
分
%M
分钟数(00-59)
秒
%S
秒(00-59)
微秒
%f
微秒(000000-999999)
时区
%z
时区名称
%Z
当前时区的名称
完整表示
%c
完整日期时间表示
%a %b %d H:M:S %Y
星期_月份_日期_时间_年份
%x
完整日期表示
m/d/y
%X
完整时间表示
H:M:S
月份 (英文)
%b
简化月份名称
%B
完整月份名称
星期
%w
星期(0-6),星期天 =0
%a
简化星期名称
%A
完整星期名称
其它
%U
年中星期数(00-53)星期天 =0
%W
年中星期数(00-53)星期一 =0
%%
%号本身
返回:
<class 'str'>
概要
from datetime import datetime,timezone,timedelta dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone(timedelta(hours=8)) ) re = dt.strftime(format='%Y-%m-%dT%H:%M:%S%z') print(re) # 2024-11-12T13:14:15+0800 print(type(re)) # <class 'str'>
__format__()
语法:
datetime_obj.__format__(format)
返回:
<class 'str'>
==> ISO日历 (日期元组)
isocalendar()
语法:
datetime_obj.isocalendar()
返回:
<class 'datetime.IsoCalendarDate'>
概要
from datetime import datetime d_obj = datetime(year=2024, month=1, day=1,hour=12) re = d_obj.isocalendar() print(re) # datetime.IsoCalendarDate(year=2024, week=1, weekday=1) print(type(re)) # <class 'datetime.IsoCalendarDate'>
==> 时间元组 (time模块)
忽略时差
timetuple()
语法:
datetime_obj.timetuple()
返回:
<class 'time.struct_time'>
概要
from datetime import datetime,timezone,timedelta dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone(timedelta(hours=8)) ) re = dt.timetuple() print(re) # time.struct_time(tm_year=2024, tm_mon=11, tm_mday=12, tm_hour=13, tm_min=14, tm_sec=15, tm_wday=1, tm_yday=317, tm_isdst=-1) print(type(re)) # <class 'time.struct_time'>
包括时差
utctimetuple()
语法:
datetime_obj.utctimetuple()
返回:
<class 'time.struct_time'>
概要
from datetime import datetime,timezone,timedelta dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone(timedelta(hours=8)) ) re = dt.timetuple() print(re) # time.struct_time(tm_year=2024, tm_mon=11, tm_mday=12, tm_hour=13, tm_min=14, tm_sec=15, tm_wday=1, tm_yday=317, tm_isdst=-1) print(type(re)) # <class 'time.struct_time'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=8), # name='Asia/Shanghai' ) dt = datetime(year=2024, month=7, day=12, hour=1, minute=14, second=15, microsecond=123456, tzinfo=tz, # fold=0 ) print(dt) print(dt.timetuple()) # time.struct_time(tm_year=2024, tm_mon=7, tm_mday=12, tm_hour=1, tm_min=14, tm_sec=15, tm_wday=4, tm_yday=194, tm_isdst=-1) re = dt.utctimetuple() print(re) # time.struct_time(tm_year=2024, tm_mon=7, tm_mday=11, tm_hour=17, tm_min=14, tm_sec=15, tm_wday=3, tm_yday=193, tm_isdst=0) print(type(re)) # <class 'time.struct_time'>
==> 星期几
星期一 =1
isoweekday()
语法:
datetime_obj.isoweekday()
返回:
<class 'int'>
从1开始的周序号
概要
from datetime import datetime, timezone, timedelta dt = datetime(year=2024, month=11, day=11, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone(timedelta(hours=8)) ) re = dt.isoweekday() print(re) # 1 = 星期一 print(type(re)) # <class 'int'>
星期一 =0
weekday()
语法:
datetime_obj.weekday()
返回:
<class 'int'>
从0开始的周序号
概要
from datetime import datetime, timezone, timedelta dt = datetime(year=2024, month=11, day=11, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone(timedelta(hours=8)) ) re = dt.weekday() print(re) # 0 = 星期一 print(type(re)) # <class 'int'>
==> 日期戳
toordinal()
语法:
datetime_obj.toordinal()
返回:
<class 'int'>
概要
from datetime import datetime, timezone, timedelta dt = datetime(year=1, month=1, day=1, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone(timedelta(hours=8)) ) print(dt) # 0001-01-01 13:14:15.123456+08:00 re = dt.toordinal() print(re) # 1 print(type(re)) # <class 'int'>
==> 时间戳
timestamp()
语法:
datetime_obj.timestamp()
返回:
<class 'float'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=-8), # name='Asia/Shanghai' ) dt = datetime(year=2024, month=7, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone.utc, # fold=0 ) print(dt) # 2024-11-12 13:14:15.123456+08:00 re = dt.timestamp() print(re) # 1720790055.123456 print(type(re)) # <class 'float'>
转换 时区
astimezone()
语法:
datetime_obj.astimezone(tz=None)
参数:
tz
None
本地时区
默认
tzinfo
指定时区
返回:
<class 'datetime.date'>
新对象
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=-8), # name='Asia/Shanghai' ) dt = datetime(year=2024, month=7, day=12, hour=1, minute=14, second=15, microsecond=123456, tzinfo=tz, # fold=0 ) print(dt) # 本地时区 re = dt.astimezone(tz=None) print(re) # 2024-07-12 17:14:15.123456+08:00 print(type(re)) # <class 'datetime.datetime'> # 指定时区 print(dt.astimezone(tz=timezone.utc)) # 2024-07-12 09:14:15.123456+00:00
修改
修改日期时间
replace()
语法:
datetime_obj.replace(year=None, # int 年 month=None, # int 月 day=None, # int 日 hour=None, # int 时 minute=None, # int 分 second=None, # int 秒 microsecond=None, # int 微秒 tzinfo=True, # tzinfo 时区() fold=None # int in[0,1] )
返回:
<class 'datetime.datetime'>
新对象
概要
from datetime import datetime, timezone, timedelta dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=timezone(timedelta(hours=8)) ) print(dt) # 2024-11-12 13:14:15.123456+08:00 re = dt.replace(year=2023, hour=12, tzinfo=timezone.utc) print(re) # 2023-11-12 12:14:15.123456+00:00 print(type(re)) # <class 'datetime.datetime'>
拆分
拆分 --> 日期
date()
语法:
datetime_obj.date()
返回:
<class 'datetime.date'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=8), # name='Asia/Shanghai' ) dt = datetime(year=2024, month=7, day=12, hour=1, minute=14, second=15, microsecond=123456, tzinfo=tz, # fold=0 ) print(dt) re = dt.date() print(re) # 2024-07-12 print(type(re)) # <class 'datetime.date'>
拆分 --> 时间 (忽略时差)
time()
语法:
datetime_obj.time()
返回:
<class 'datetime.time'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=8), # name='Asia/Shanghai' ) dt = datetime(year=2024, month=7, day=12, hour=1, minute=14, second=15, microsecond=123456, tzinfo=tz, # fold=0 ) print(dt) re = dt.time() print(re) # 01:14:15.123456 print(type(re)) # <class 'datetime.time'>
拆分 --> 时间 (包括时差)
timetz()
语法:
datetime_obj.timetz()
返回:
<class 'datetime.time'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=8), # name='Asia/Shanghai' ) dt = datetime(year=2024, month=7, day=12, hour=1, minute=14, second=15, microsecond=123456, tzinfo=tz, # fold=0 ) print(dt) re = dt.timetz() print(re) # 01:14:15.123456+08:00 print(type(re)) # <class 'datetime.time'>
获取
获取UTC时差
utcoffset()
语法:
datetime_obj.utcoffset()
返回:
<class 'datetime.timedelta'>
<class 'NoneType'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=tz ) print(dt) # 2024-11-12 13:14:15.123456+08:00 re = dt.utcoffset() print(re) # 8:00:00 print(type(re)) # <class 'datetime.timedelta'>
获取时区名
tzname()
语法:
datetime_obj.tzname()
返回:
<class 'str'>
没定义时区名返回'UTC+时差'
<class 'NoneType'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=tz ) print(dt) # 2024-11-12 13:14:15.123456+08:00 re = dt.tzname() print(re) # Asia/Shanghai print(type(re)) # <class 'str'>
获取夏令时偏移量
dst()
语法:
datetime_obj.dst()
返回:
None
如果指定的日期时间对象dt所在的时区不使用夏令时,返回 的偏移量将为零
<class 'NoneType'>
概要
from datetime import time tz = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) re = time(hour=12, minute=13, second=59, tzinfo=tz) print(tz) # Asia/Shanghai print(re) # 12:13:59+08:00 re = re.dst() print(re) # None print(type(re)) # <class 'NoneType'>
弃用
运算
加
__add__()
语法:
datetime_obj.__add__(other) # timedelta
datetime_obj + timedelta
返回:
<class 'datetime.date'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=-8), # name='Asia/Shanghai' ) dt1 = datetime(year=2024, month=1, day=1, hour=1, ) dt4 = dt1.replace(tzinfo=tz) print(type(dt1)) # <class 'datetime.datetime'> print('dt1:', id(dt1), dt1) # 2024-01-01 01:00:00 print('dt1+timedelta', dt1 + timedelta(hours=1)) # 2024-01-01 02:00:00 print('dt4:', id(dt4), dt4) # 2024-01-01 01:00:00-08:00 print('dt4+timedelta', dt4 + timedelta(hours=1)) # 2024-01-01 02:00:00-08:00
减
__sub__()
语法:
datetime_obj.__sub__(other) # timedelta 或 datetime
datetime_obj - timedelta 或 datetime
返回:
datetime
<class 'datetime.timedelta'>
timedelta
<class 'datetime.date'>
只能简单型与简单型, 感知型与感知型相减
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=-8), # name='Asia/Shanghai' ) dt1 = datetime(year=2024, month=1, day=1, hour=1, ) dt2 = datetime(year=2024, month=1, day=1, hour=1, ) print('dt1:', id(dt1), dt1) # 3094066340384 2024-01-01 01:00:00 print(type(dt1)) # <class 'datetime.datetime'> print('dt2:', id(dt2), dt2) # 2024-01-01 01:00:00 dt4 = dt1.replace(tzinfo=tz) print('dt4:', id(dt4), dt4) # 2024-01-01 01:00:00-08:00 dt5 = dt2.replace(tzinfo=tz) print('dt5:', id(dt5), dt5) # 2024-01-01 01:00:00-08:00 # ---减------------------- # datetime - datetime print('dt1-dt2', dt1 - dt2) # 0:00:00 print('dt4-dt5', dt4 - dt5) # 0:00:00 print('dt4-dt5', dt4.__sub__(dt5)) # 0:00:00 # datetime - timedelta print('dt4-timedelta', dt4.__sub__(timedelta(hours=1))) # 2024-01-01 00:00:00-08:00 # 只能简单型与简单型,感知型与感知型相减 # print(dt1 - dt5) # 报错
比较
>=
__ge__()
语法:
date_obj_1.__ge__(date_obj_2)
date_obj_1 >= date_obj_2
>
__gt__()
语法:
date_obj_1.__gt__(date_obj_2)
date_obj_1 > date_obj_2
<=
__le__()
语法:
date_obj_1.__le__(date_obj_2)
date_obj_1 <= date_obj_2
<
__lt__()
语法:
date_obj_1.__lt__(date_obj_2)
date_obj_1 < date_obj_2
只能简单型与简单型, 感知型与感知型比较
==
__eq__()
语法:
date_obj_1.__eq__(date_obj_2)
date_obj_1 == date_obj_2
!=
__ne__()
语法:
datetime_obj_1.__ne__(datetime_obj_2)
datetime_obj_1 != datetime_obj_2
可以简单型与感知型比较
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=-8), # name='Asia/Shanghai' ) dt1 = datetime(year=2024, month=1, day=1, hour=1, ) dt2 = datetime(year=2024, month=1, day=1, hour=1, ) print('dt1:', id(dt1), dt1) # 3094066340384 2024-01-01 01:00:00 print(type(dt1)) # <class 'datetime.datetime'> print('dt2:', id(dt2), dt2) # 2024-01-01 01:00:00 dt4 = dt1.replace(tzinfo=tz) print('dt4:', id(dt4), dt4) # 2024-01-01 01:00:00-08:00 dt5 = dt2.replace(tzinfo=tz) print('dt5:', id(dt5), dt5) # 2024-01-01 01:00:00-08:00 print('dt1==dt2', dt1 == dt4) # True print('dt4==dt5', dt4 == dt5) # True print('dt4==dt5', dt4.__eq__(dt5)) # True # print(dt1 >= dt5) # 报错 # 可以简单型与感知型比较 print('dt1!=dt5', dt1.__ne__(dt5)) # True print(dt1 == dt5) # False
类 方法
创建
当前当地日期时间 (不带时区)
today()
语法:
datetime.today()
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime re = datetime.today() print(re) # 2024-11-09 10:38:59.712139 print(type(re)) # <class 'datetime.datetime'> print(re.tzinfo) # None print(re.fold) # 0
now()
语法:
datetime.now(tz=None)
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime re = datetime.now() print(re) # 2024-11-09 10:38:59.712139 print(type(re)) # <class 'datetime.datetime'> print(re.tzinfo) # None print(re.fold) # 0
当前指定时区日期时间 (带时区)(感知型)
now()
语法:
datetime.now(tz=tzinfo) # tzinfo 时区
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=8), name='bj/sh') re = datetime.now(tz=tz) print(re) # 2024-11-12 10:35:27.443004+08:00 print(type(re)) # <class 'datetime.datetime'> print(re.tzinfo) # bj/sh print(re.fold) # 0 print(re.utcoffset()) # 8:00:00
合拼
合拼日期和时间
combine()
语法:
datetime.combine(date, # date 时区 time, # time 时区 tzinfo # tzinfo | None 时区 )
参数:
date
传入 datetime 忽略时间部分
tzinfo
默认
传入 time时区
None
无时区
tzinfo
指定时区
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime, timezone, date, time, timedelta dt = datetime.now(timezone(offset=timedelta(hours=-8))) tz = timezone(offset=timedelta(hours=8)) da = date(year=2024, month=11, day=13) ti = time(hour=12, minute=13, second=14, tzinfo=timezone.utc ) re = datetime.combine(date=dt, time=ti, # tzinfo=None ) print(re) # 2024-11-11 12:13:14+00:00 print(type(re)) # <class 'datetime.datetime'> print(re.tzinfo) # UTC print(re.fold) # 0 print(re.utcoffset()) # 0:00:00
转换
日期戳 ==> 日期时间类型
fromordinal()
语法:
datetime.fromordinal(int) # 日期戳(公元1年1月1日的序号=1)
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime dd = datetime.fromordinal(1) print(dd) # 0001-01-01 print(type(dd)) # <class 'datetime.datetime'>
时间戳 ==> 日期时间类型
fromtimestamp()
语法:
datetime.fromtimestamp(timestamp, # float 时间戳0=(1970-01-01 00:00:00) tz=None # tzinfo | None 时区 )
参数:
tz
None
默认
返回当地日期和时间
(感知型)
tzinfo
返回指定时区日期和时间
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=-8)) dd = datetime.fromtimestamp(timestamp=0, tz=None ) print(dd) # 1970-01-01 08:00:00 print(type(dd)) # <class 'datetime.datetime'>
年周天 ==> 日期时间类型
fromisocalendar()
语法:
datetime.fromisocalendar(year, # int 年 week, # int 周 day # int 天 )
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime dd = datetime.fromisocalendar(year=2024, week=1, day=1) print(dd) # 2024-01-01 00:00:00 print(type(dd)) # <class 'datetime.datetime'>
字符串 ==> 日期时间类型
字符串 ==> 日期时间类型 (iso格式)
fromisoformat()
语法:
datetime.fromisoformat(date_string) # str 标准日期字符串 'YYYY-MM-DD HH:MM:SS.000000+00:00'
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime dd = datetime.fromisoformat('2024-11-11 12:13:14.000000+01:00') print(dd) # 2024-11-11 12:13:14+01:00 print(type(dd)) # <class 'datetime.datetime'> print(dd.tzinfo) # UTC+01:00 print(dd.fold) # 0
字符串 ==> 日期时间类型 (指定格式格式)
strptime()
语法:
datetime.strptime(date_string, # str 日期时间 format # str 指定格式 )
参数:
format
格式化符号
年份
%y
两位数(00-99)
%Y
四位数(000-9999)
月份
%m
月份(01-12)
日期
%d
月内日期(0-31)
%j
年内日期(001-366)
时间
%H
24小时制(0-23)
%p
AM或PM
%I
12小时制(01-12)
分
%M
分钟数(00-59)
秒
%S
秒(00-59)
微秒
%f
微秒(000000-999999)
时区
%z
时区名称
%Z
当前时区的名称
完整表示
%c
完整日期时间表示
%a %b %d H:M:S %Y
星期_月份_日期_时间_年份
%x
完整日期表示
m/d/y
%X
完整时间表示
H:M:S
月份 (英文)
%b
简化月份名称
%B
完整月份名称
星期
%w
星期(0-6),星期天 =0
%a
简化星期名称
%A
完整星期名称
其它
%U
年中星期数(00-53)星期天 =0
%W
年中星期数(00-53)星期一 =0
%%
%号本身
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime dd = datetime.strptime('2024-11-11 12:13:14.123456+01:00', '%Y-%m-%d %H:%M:%S.%f%z') print(dd) # 2024-11-11 12:13:14.123456+01:00 print(type(dd)) # <class 'datetime.datetime'>
已弃用
utcnow()
utcfromtimestamp()
属性:
对象 属性
年
year
语法:
datetime_obj.year
返回:
<class 'int'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=8)) re = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=16, tzinfo=tz) re = re.year print(re) # 2024 print(type(re)) # <class 'int'>
月
month
语法:
datetime_obj.month
返回:
<class 'int'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=8)) re = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=16, tzinfo=tz) re = re.month print(re) # 11 print(type(re)) # <class 'int'>
日
day
语法:
datetime_obj.day
返回:
<class 'int'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=8)) re = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=16, tzinfo=tz) re = re.day print(re) # 12 print(type(re)) # <class 'int'>
时
hour
语法:
datetime_obj.hour
返回:
<class 'int'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=8)) re = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=16, tzinfo=tz) re = re.hour print(re) # 13 print(type(re)) # <class 'int'>
分
minute
语法:
datetime_obj.minute
返回:
<class 'int'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=8)) re = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=16, tzinfo=tz) re = re.minute print(re) # 14 print(type(re)) # <class 'int'>
秒
second
语法:
datetime_obj.second
返回:
<class 'int'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=8)) re = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=16, tzinfo=tz) re = re.second print(re) # 15 print(type(re)) # <class 'int'>
微秒
microsecond
语法:
datetime_obj.microsecond
返回:
<class 'int'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=8)) re = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=16, tzinfo=tz) re = re.microsecond print(re) # 16 print(type(re)) # <class 'int'>
时区
tzinfo
语法:
datetime_obj.tzinfo
返回:
<class 'datetime.timezone'>
<class 'NoneType'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=8)) re = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=16, tzinfo=tz ) re = re.tzinfo print(re) # UTC+08:00 print(type(re)) # <class 'datetime.timezone'>
字段检查
fold
语法:
datetime_obj.fold
返回:
<class 'int'>
概要
类 属性
最小日期
min
语法:
datetime.min
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime re = datetime.min print(re) # 0001-01-01 00:00:00 print(type(re)) # <class 'datetime.datetime'>
最大日期
max
语法:
datetime.max
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime re = datetime.max print(re) # 9999-12-31 23:59:59.999999 print(type(re)) # <class 'datetime.datetime'>
日期最小间隔
resolution
语法:
datetime.resolution
返回:
<class 'datetime.timedelta'>
概要
from datetime import datetime re = datetime.resolution print(re) # 0:00:00.000001 print(type(re)) # <class 'datetime.timedelta'>
时间 对象
time
创建:
time()
语法:
time_obj = datetime.time(hour=0, # int 时(0-23) minute=0, # int 分(0-59) second=0, # int 秒(0-59) microsecond=0, # int 微秒(0-999999) tzinfo=None # 时区() fold=0 # int in[0,1] )
参数:
fold
取值范围是 [0, 1]
用于在重复的时间段中消除边界时间歧义
当夏令时结束时回拨时钟或由于政治原因导致当明时区的 UTC 时差减少就会出现重复的时间段。
0
两个时刻 早于 所代表的同一边界时间
1
两个时刻 晚于 所代表的同一边界时间
返回:
<class 'datetime.time'>
概要
from datetime import time re = time(23, 59, 59, 999999, ) print(re) # 23:59:59.999999 print(type(re)) # <class 'datetime.time'>
操作:
实例 操作
操作
转换
==> 字符串 (标准格式)
isoformat()
语法:
time_obj.isoformat(timespec)
参数:
timespec
转换精度
'auto'
自动
'hours'
时
'minutes'
分
'seconds'
秒
'milliseconds'
毫秒
'microseconds'
微秒
所有
返回:
<class 'str'>
格式:
'HH:MM:SS.mmmmmm+zz:zz'
概要
from datetime import time re = time(13, 1, 1, ) print(re.isoformat(timespec='microseconds')) # 13:01:01.000000 re = re.isoformat(timespec='auto') print(re) # 13:01:01 print(type(re)) # <class 'str'>
==> 自定义格式
strftime()
语法:
time_obj.strftime(format)
参数:
format
格式化符号
时间
%H
24小时制(0-23)
%p
AM或PM
%I
12小时制(01-12)
分
%M
分钟数(00-59)
秒
%S
秒(00-59)
微秒
%f
微秒(000000-999999)
时区
%Z
UTC时区
%z
UTC时区
完整表示
%X
完整时间表示
H:M:S
返回:
<class 'str'>
__format__()
语法:
time_obj.__format__(format)
参数:
format
返回:
<class 'str'>
概要
from datetime import time re = time(13, 1, 1, 1) re = re.strftime('%p %I:%M:%S') print(re) # PM 01:01:01 print(type(re)) # <class 'str'>
修改
修改时间
replace()
语法:
time_obj.replace(hour=None, # int 时(0-23) minute=None, # int 分(0-59) second=None, # int 秒(0-59) microsecond=None, # int 微秒(0-999999) tzinfo=True, # tzinfo 时区 fold=None # int in[0,1] )
返回:
<class 'datetime.time'>
新时间对象
概要
from datetime import time ti = time(hour=13, minute=1, second=1, microsecond=1) print(ti) # 13:01:01.000001 re = ti.replace(hour=12, second=11) print(re) # 12:01:11.000001 print(type(re)) # <class 'datetime.time'>
获取
获取UTC时差
utcoffset()
语法:
time_obj.utcoffset()
返回:
<class 'datetime.timedelta'>
<class 'NoneType'>
概要
from datetime import time tz = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) re = time(hour=12, minute=13, second=59, tzinfo=tz) print(tz) # Asia/Shanghai print(re) # 12:13:59+08:00 re = re.utcoffset() print(re) # 8:00:00 print(type(re)) # <class 'datetime.timedelta'>
获取时区名
tzname()
语法:
time_obj.tzname()
返回:
<class 'str'>
没定义时区名返回'UTC+时差'
<class 'NoneType'>
概要
from datetime import datetime, timezone, timedelta tz = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) dt = datetime(year=2024, month=11, day=12, hour=13, minute=14, second=15, microsecond=123456, tzinfo=tz ) print(dt) # 2024-11-12 13:14:15.123456+08:00 re = dt.tzname() print(re) # Asia/Shanghai print(type(re)) # <class 'str'>
获取夏令时偏移量
dst()
语法:
time_obj.dst()
返回:
None
如果指定的日期时间对象dt所在的时区不使用夏令时,返回 的偏移量将为零
<class 'NoneType'>
概要
from datetime import time tz = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) re = time(hour=12, minute=13, second=59, tzinfo=tz) print(tz) # Asia/Shanghai print(re) # 12:13:59+08:00 re = re.dst() print(re) # None print(type(re)) # <class 'NoneType'>
比较
>=
__ge__()
语法:
time_obj_1.__ge__(time_obj_2)
time_obj_1 >= time_obj_2
>
__gt__()
语法:
time_obj_1.__gt__(time_obj_2)
time_obj_1 > time_obj_2
<=
__le__()
语法:
time_obj_1.__le__(time_obj_2)
time_obj_1 <= time_obj_2
<
__lt__()
语法:
time_obj_1.__lt__(time_obj_2)
time_obj_1 < time_obj_2
只能简单型与简单型, 感知型与感知型比较
==
__eq__()
语法:
time_obj_1.__eq__(time_obj_2)
time_obj_1 == time_obj_2
!=
__ne__()
语法:
time_obj_1.__ne__(time_obj_2)
time_obj_1 != time_obj_2
可以简单型与感知型比较
概要
from datetime import time tz = timezone(offset=timedelta(hours=-8), # name='Asia/Shanghai' ) t1 = time(hour=13, ) print(type(t1)) # <class 'datetime.datetime'> print('t1:', id(t1), t1) # 3094066340384 2024-01-01 01:00:00 t2 = time(hour=13, ) print('t2:', id(t2), t2) # 2024-01-01 01:00:00 t4 = t1.replace(tzinfo=tz) print('t4:', id(t4), t4) # 2024-01-01 01:00:00-08:00 t5 = t2.replace(tzinfo=tz) print('t5:', id(t5), t5) # 2024-01-01 01:00:00-08:00 print('t1==t2', t1 == t2) # True print('t4==t5', t4 == t5) # True # print(t1 >= t5) # 报错 # 可以简单型与感知型比较 print('t1!=t5', t1.__ne__(t5)) # True print(t1 == t5) # False
类 方法
转换
字符串 ==> time类型
fromisoformat()
语法:
time.fromisoformat(time_string) # str ISO格式:'HH:MM:SS. mmmmmm+zz:zz'
返回:
<class 'datetime.time'>
概要
from datetime import time re = time.fromisoformat('12:12:12') # ISO格式:'HH:MM:SS. mmmmmm+zz:zz' print(re) # 12:12:12 print(type(re)) # <class 'datetime.time'>
属性:
对象 属性
时
hour
语法:
time_obj.hour
返回:
<class 'int'>
概要
from datetime import time re = time(hour=23, minute=59, second=59, microsecond=999999).hour print(re) # 23 print(type(re)) # <class 'int'>
分
minute
语法:
time_obj.minute
返回:
<class 'int'>
概要
from datetime import time re = time(hour=23, minute=59, second=59, microsecond=999999).minute print(re) # 59 print(type(re)) # <class 'int'>
秒
second
语法:
time_obj.second
返回:
<class 'int'>
概要
from datetime import time re = time(hour=23, minute=59, second=59, microsecond=999999).second print(re) # 59 print(type(re)) # <class 'int'>
微秒
microsecond
语法:
time_obj.microsecond
返回:
<class 'int'>
概要
from datetime import time re = time(hour=23, minute=59, second=59, microsecond=999999).microsecond print(re) # 999999 print(type(re)) # <class 'int'>
时区
tzinfo
语法:
time_obj.tzinfo
返回:
<class 'datetime.timezone'>
<class 'NoneType'>
概要
from datetime import time, timezone, timedelta tz = timezone(timedelta(hours=8)) re = time(hour=13, minute=14, second=15, microsecond=16, tzinfo=tz ) re = re.tzinfo print(re) # UTC+08:00 print(type(re)) # <class 'datetime.timezone'>
边界时间
fold
语法:
time_obj.fold
返回:
<class 'int'>
概要
类 属性
最小时间
min
语法:
time.min
返回:
<class 'datetime.time'>
概要
from datetime import time re = time.min print(re) # 00:00:00 print(type(re)) # <class 'datetime.time'>
最大时间
max
语法:
time.max
返回:
<class 'datetime.time'>
概要
from datetime import time d = time.max print(d) # 23:59:59.999999 print(type(d)) # <class 'datetime.time'>
时间最小间隔
resolution
语法:
time.resolution
返回:
<class 'datetime.timedelta'>
概要
from datetime import time re = time.resolution print(re) # 0:00:00.000001 print(type(re)) # <class 'datetime.timedelta'>
时长 对象
timedelta
说明:
主要用于做时间加减
创建:
timedelta()
语法:
timedelta_obj = datetime.timedelta(days=0, # int 天 hour=0, # int 时 minute=0, # int 分) second=0, # int 秒) milliseconds=0, # int 毫秒(0-999) microsecond=0, # int 微秒(0-999999) weeks=0 # 周 )
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta re = timedelta(days=33, hours=1) print(re) # 33 days, 1:00:00 print(type(re)) # <class 'datetime.timedelta'>
操作:
实例 操作
操作
转换
==> 总秒数
total_seconds()
语法:
timedelta_obj.total_seconds()
返回:
<class 'float'>
概要
from datetime import timedelta re = timedelta(days=1, seconds=30, microseconds=40).total_seconds() print(re) # 86430.00004 print(type(re)) # <class 'float'>
一元操作
绝对值
__abs__()
语法:
timedelta_obj_1.__abs__()
-timedelta_obj_1
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=-4, seconds=-2, microseconds=-3) print(t2) # -5 days, 23:59:57.999997 re = t2.__abs__() print(re) # -4 days, 0:00:02.000003 print(type(re)) # <class 'datetime.timedelta'>
相反数
__neg__()
语法:
timedelta_obj_1.__neg__()
-timedelta_obj_1
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=-4, seconds=-2, microseconds=-3) print(-t1) # -4 days, 23:59:54.999993 re = t2.__neg__() print(re) # 4 days, 0:00:02.000003 print(type(re)) # <class 'datetime.timedelta'>
运算
加
__add__()
语法:
timedelta_obj_1.__add__(timedelta_obj_2)
timedelta_obj_1 + timedelta_obj_2
返回:
<class 'datetime.timedelta'>
__radd__()
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=1, seconds=2, microseconds=3) print(t1 + t2) # 4 days, 0:00:07.000010 re = t1.__radd__(t2) print(re) # 4 days, 0:00:07.000010 print(type(re)) # <class 'datetime.timedelta'>
减
减去
__sub__()
语法:
timedelta_obj_1.__sub__(time_obj_2)
timedelta_obj_1 - time_obj_2
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=4, seconds=2, microseconds=3) print(t1 - t2) # -1 day, 0:00:03.000004 re = t1.__sub__(t2) print(re) # -1 day, 0:00:03.000004 print(type(re)) # <class 'datetime.timedelta'>
被减
__rsub__()
语法:
timedelta_obj_1.__rsub__(time_obj_2)
time_obj_2 - timedelta_obj_1
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=4, seconds=2, microseconds=3) print(t1 - t2) # -1 day, 0:00:03.000004 re = t1.__rsub__(t2) print(re) # 23:59:56.999996 print(type(re)) # <class 'datetime.timedelta'>
乘
__mul__()
语法:
timedelta_obj_1.__mul__(value) # float
timedelta_obj_1 * float
返回:
<class 'datetime.timedelta'>
__rmul__()
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=4, seconds=2, microseconds=3) print(2 * t2) # 8 days, 0:00:04.000006 re = t2.__mul__(2) print(re) # 8 days, 0:00:04.000006 print(type(re)) # <class 'datetime.timedelta'>
除
__truediv__()
语法:
timedelta_obj_1.__truediv__(value) # float
timedelta_obj_1 / float
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=4, seconds=2, microseconds=4) print(t2/2) # 2 days, 0:00:01.000002 re = t2.__truediv__(2) print(re) # 2 days, 0:00:01.000002 print(type(re)) # <class 'datetime.timedelta'>
整除
__floordiv__()
语法:
timedelta_obj_1.__floordiv__(other) # int/timedelta
timedelta_obj_1 // int/timedelta
返回:
int
<class 'datetime.timedelta'>
timedelta
<class 'int'>
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=4, seconds=2, microseconds=3) re = t2 // t1 print(re) # 1 print(type(re)) # <class 'int'> re = t2.__floordiv__(2) print(re) # 2 days, 0:00:01.000001 print(type(re)) # <class 'datetime.timedelta'>
取余
__mod__()
语法:
timedelta_obj_1.__mod__(other) # timedelta
timedelta_obj_1 % int/timedelta
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=4, seconds=2, microseconds=3) re = t2 % t1 print(re) # 23:59:56.999996 print(type(re)) # <class 'datetime.timedelta'> re = t2.__mod__(t1) print(re) # 23:59:56.999996 print(type(re)) # <class 'datetime.timedelta'>
商和余数
__divmod__()
语法:
timedelta_obj_1.__divmod__(other) # timedelta
返回:
<class 'tuple'>
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=4, seconds=2, microseconds=3) re = t2.__divmod__(t1) print(re) # (1, datetime.timedelta(seconds=86396, microseconds=999996)) print(type(re)) # <class 'tuple'>
比较
==
__eq__()
语法:
timedelta_obj_1.__eq__(timedelta_obj_2)
timedelta_obj_1 == timedelta_obj_2
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=1, seconds=2, microseconds=3) print(t1 == t2) # False re = t1.__eq__(t2) print(re) # False print(type(re)) # <class 'bool'>
>=
__ge__()
语法:
timedelta_obj_1.__ge__(timedelta_obj_2)
timedelta_obj_1 >= timedelta_obj_2
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=1, seconds=2, microseconds=3) print(t1 >= t2) # True re = t1.__ge__(t2) print(re) # True print(type(re)) # <class 'bool'>
>
__gt__()
语法:
timedelta_obj_1.__gt__(timedelta_obj_2)
timedelta_obj_1 > timedelta_obj_2
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=1, seconds=2, microseconds=3) print(t1 > t2) # True re = t1.__gt__(t2) print(re) # True print(type(re)) # <class 'bool'>
<=
__le__()
语法:
timedelta_obj_1.__le__(timedelta_obj_2)
timedelta_obj_1 <= timedelta_obj_2
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=1, seconds=2, microseconds=3) print(t1 <= t2) # False re = t1.__le__(t2) print(re) # False print(type(re)) # <class 'bool'
<
__lt__()
语法:
timedelta_obj_1.__lt__(timedelta_obj_2)
timedelta_obj_1 < timedelta_obj_2
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=1, seconds=2, microseconds=3) print(t1 < t2) # False re = t1.__le__(t2) print(re) # False print(type(re)) # <class 'bool'>
!=
__ne__()
语法:
timedelta_obj_1.__ne__(timedelta_obj_2)
timedelta_obj_1 != timedelta_obj_2
概要
from datetime import timedelta t1 = timedelta(days=3, seconds=5, microseconds=7) t2 = timedelta(days=1, seconds=2, microseconds=3) print(t1 != t2) # True re = t1.__ne__(t2) print(re) # True print(type(re)) # <class 'bool'>
属性:
对象 属性
天
days
语法:
timedelta_obj.days
返回:
<class 'int'>
概要
from datetime import timedelta re = timedelta(days=1, seconds=30, microseconds=40).days print(re) # 1 print(type(re)) # <class 'int'>
秒
seconds
语法:
timedelta_obj.seconds
返回:
<class 'int'>
概要
from datetime import timedelta re = timedelta(days=1, seconds=30, microseconds=40).seconds print(re) # 30 print(type(re)) # <class 'int'>
微秒
microseconds
语法:
timedelta_obj.microseconds
返回:
<class 'int'>
概要
from datetime import timedelta re = timedelta(days=1, seconds=30, microseconds=40).microseconds print(re) # 40 print(type(re)) # <class 'int'>
类 属性
最小时间
min
语法:
timedelta.min
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta re = timedelta.min print(re) # -999999999 days, 0:00:00 print(type(re)) # <class 'datetime.timedelta'>
最大时间
max
语法:
timedelta.max
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta re = timedelta.max print(re) # 999999999 days, 23:59:59.999999 print(type(re)) # <class 'datetime.timedelta'>
时间最小间隔
resolution
语法:
timedelta.resolution
返回:
<class 'datetime.timedelta'>
概要
from datetime import timedelta re = timedelta.resolution print(re) # 0:00:00.000001 print(type(re)) # <class 'datetime.timedelta'>
时区 对象
时区 抽象基类
tzinfo
概述
用于处理时区的一个抽象层
这是一个抽象基类,该类不应被直接实例化。 定义 tzinfo 的子类来捕获有关特定时区的信息
时区 子类
timezone
概述
实现了 tzinfo 抽象基类的子类,用于表示相对于 世界标准时间(UTC)的偏移量
创建:
timezone()
语法:
time_obj = datetime.timezone(offset=0, # timedelta 时差 name=0, # str 时区名 )
返回:
<class 'datetime.timezone'>
概要
from datetime import timezone, timedelta re = timezone(timedelta(hours=8)) print(re) # UTC+08:00 print(type(re)) # <class 'datetime.timezone'>
操作:
实例 操作
UTC时差
utcoffset()
语法:
timezone_obj.utcoffset(dt) # datetime | None
返回:
<class 'datetime.timedelta'>
注意:
dt=datetime ,datetime被忽略
概要
from datetime import timezone, timedelta print(timezone.utc) dt = datetime(year=2024, month=7, day=1, hour=12, # tzinfo=timezone(timedelta(hours=-8), name='EST') ) re = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) # re = re.utcoffset(None) re = re.utcoffset(dt) print(re) # 8:00:00 print(type(re)) # <class 'datetime.timedelta'>
时区名
tzname()
语法:
timezone_obj.tzname(dt) # datetime | None
返回:
<class 'str'>
没定义时区名返回'UTC+时差'
注意:
dt=datetime ,datetime被忽略
概要
from datetime import timezone, timedelta dt = datetime(year=2024, month=7, day=1, hour=12, # tzinfo=timezone(timedelta(hours=-8), name='EST') ) re = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) # re = re.tzname(None) re = re.tzname(dt) print(re) # Asia/Shanghai print(type(re)) # <class 'str'>
夏令时偏移量
dst()
语法:
timezone_obj.dst(dt) # datetime
返回:
None
如果指定的日期时间对象dt所在的时区不使用夏令时,返回 的偏移量将为零
<class 'datetime.timezone'>
概要
子主题
UTC --> 本地时间
fromutc
语法:
timezone_obj.fromutc(dt) # datetime
返回:
<class 'datetime.datetime'>
概要
from datetime import datetime, timezone, timedelta re = timezone(offset=timedelta(hours=8), name='Asia/Shanghai' ) dt = datetime(year=2024, month=7, day=1, hour=12, tzinfo=re ) print(dt) re = re.fromutc(dt) print(re) # 2024-07-01 20:00:00+08:00 print(type(re)) # <class 'datetime.datetime'>
属性:
类 属性
最小时间
min
语法:
timezone.min
返回:
<class 'datetime.timezone'>
概要
from datetime import timezone re = timezone.min print(re) # UTC-23:59 print(type(re)) # <class 'datetime.timezone'>
最大时间
max
语法:
timezone.max
返回:
<class 'datetime.timezone'>
概要
from datetime import timezone re = timezone.max print(re) # UTC+23:59 print(type(re)) # <class 'datetime.timezone'>
UTC(感知型)
utc
语法:
timezone.utc
返回:
<class 'datetime.time'>
概要
re = timezone.utc print(re) # UTC print(type(re)) # <class 'datetime.timezone'>
日期时间格式化符号
基本
年份
%y
两位数(00-99)
%Y
四位数(000-9999)
月份
%m
月份(01-12)
日期
%d
月内日期(0-31)
%j
年内日期(001-366)
时间
%H
24小时制(0-23)
%p
AM或PM
%I
12小时制(01-12)
分
%M
分钟数(00-59)
秒
%S
秒(00-59)
微秒
%f
微秒(000000-999999)
时区
%z
时区名称
%Z
当前时区的名称
扩展
完整表示
%c
完整日期时间表示
%a %b %d H:M:S %Y (星期_月份_日期_时间_年份)
%x
完整日期表示
m/d/y
%X
完整时间表示
H:M:S
月份 (英文)
%b
简化月份名称
%B
完整月份名称
星期
%w
星期(0-6),星期天 =0
%a
简化星期名称
%A
完整星期名称
其它
%U
年中星期数(00-53)星期天 =0
%W
年中星期数(00-53)星期一 =0
%%
%号本身
时间的概念
时间的概念
GMT:
即格林威治标准时间。
UTC:
世界协调时间,比格林威治更精确。
DST:
D即Daylight,表示夏令时。
CST:
美国、澳大利亚、中国、古巴的标准时间。
LMT
当地标准时间