Skip to main content

日期时间

datetime

当前日期时间

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2019, 2, 27, 11, 10, 49, 55, 53)

构造日期时间

>>> dt = datetime.datetime(2019, 10, 21, 16, 29, 0)
>>> dt.year, dt.month, dt.day
(2019, 10, 21)
>>> dt.hour, dt.minute, dt.second
(16, 29, 0)
info

传入代表 的整数,以得到特定时刻的 datetime 对象。 这些整数将保存在 datetime 对象的 yearmonthdayhourminutesecond 属性中。

timedelta

datetime 模块还提供了 timedelta 数据类型,它表示一个“时段”,而不是一个“时刻”。

>>> delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
>>> delta.days, delta.seconds, delta.microseconds
(11, 36548, 0)
>>> delta.total_seconds()
986948.0
>>> str(delta)
'11 days, 10:09:08'
info

datetime. timedelta() 函数接收关键字参数 weeksdayshoursminutessecondsmillisecondsmicroseconds

日期计算

计算今天之后 1000 天的日期。

>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2018, 12, 2, 18, 38, 50, 636181)
>>> thousandDays = datetime.timedelta(days=1000)
>>> dt + thousandDays
datetime.datetime(2021, 8, 28, 18, 38, 50, 636181)
tip

- 号可以计算之前的日期。

strftime

利用 strftime() 方法可以将 datetime 对象显示为字符串。

>>> oct21st = datetime.datetime(2019, 10, 21, 16, 29, 0)
>>> oct21st.strftime('%Y/%m/%d %H:%M:%S')
'2019/10/21 16:29:00'
完整的 strftime() 指令
strftime 指令含义
%Y带世纪的年份,例如'2014'
%y不带世纪的年份, '00'至'99'(1970 至 2069)
%m数字表示的月份, '01'至'12'
%B完整的月份,例如'November'
%b简写的月份,例如'Nov'
%d一月中的第几天, '01'至'31'
%j一年中的第几天, '001'至'366'
%w一周中的第几天, '0'(周日)至'6'(周六)
%A完整的周几,例如'Monday'
%a简写的周几,例如'Mon'
%H小时(24 小时时钟), '00'至'23'
%I小时(12 小时时钟), '01'至'12'
%M分, '00'至'59'
%S秒, '00'至'59'
%p'AM'或'PM'
%%就是'%'字符

strptime

如果需要将日期字符串转换为 datetime 对象, 就用 datetime.datetime.strptime() 函数。strptime() 函数与 strftime() 函数相反。自定义的格式字符串使用的指令与 strftime() 的相同。

>>> datetime.datetime.strptime('2019/10/21 16:29:00', '%Y/%m/%d %H:%M:%S')
datetime.datetime(2019, 10, 21, 16, 29)