datetime
:from datetime import datetime
,时间日期相关timedelta
:from datetime import timedelta
,计算两个时间的时间差timezone
:from datetime import timezone
,时区相关
datetime模块
方法
时间互转方法
方法 | 描述 |
---|---|
now() | 获取当前时间,返回一个datetime对象 |
timestamp() | 将datetime对象的时间数据转换成时间戳(float类型)并返回 |
datetime(year, month=None, day=None, hour=0, minute=0, second=0,microsecond=0, tzinfo=None, *, fold=0) | 根据给定的参数,生成对应的时间对象(datetime对象) |
strptime(date_string, format) | str parse time,将字符串转成时间对象,date_string为字符串的时间,format为时间格式,即按照指定的时间格式去解析date_string,然后生成一个新的datetime对象 |
strftime(format) | str format time,将时间对象格式化成字符串,参数format为时间格式,该方法按照format指定的格式将datetime对象的时间转成字符串并返回 |
fromtimestamp(t, tz=None) | 根据时间戳t(float类型)生成一个datetime对象并返回 |
import datetime
# 当前日期时间
now = datetime.datetime.now()
print(f"now()方法返回值信息:类型是{type(now)},值是{now}\n")
# 转成时间戳
time_stamp = now.timestamp()
print(f"timestamp()方法返回值信息:类型是{type(time_stamp)},值是{time_stamp}\n")
# 获取指定的时间
date_time1 = datetime.datetime(2026, 12, 26, 22, 46, 17)
print(f"datetime()方法:类型是{type(date_time1)},值是{date_time1}\n")
# 字符串转换成datetime实例
date_time2 = datetime.datetime.strptime("2022-09-01 23:55:12", "%Y-%m-%d %H:%M:%S")
print(f"strptime()方法返回值信息:类型是{type(date_time2)},值是{date_time2}\n")
# 时间转成字符串
date_time3 = datetime.datetime(2026, 12, 26, 22, 46, 17)
str_time = date_time3.strftime("%Y/%m/%d %H:%M:%S")
print(f"strftime()方法返回值信息:类型是{type(str_time)},值是{str_time}\n")
# 时间戳转成时间
timestamp_data = 1662263658.583933
date = datetime.datetime.fromtimestamp(timestamp_data)
print(f"fromtimestamp()方法返回值信息:类型是{type(date)},值是{date}\n")
执行结果为:
now()方法返回值信息:类型是<class 'datetime.datetime'>,值是2022-09-04 12:18:11.812748
timestamp()方法返回值信息:类型是<class 'float'>,值是1662265091.812748
datetime()方法:类型是<class 'datetime.datetime'>,值是2026-12-26 22:46:17
strptime()方法返回值信息:类型是<class 'datetime.datetime'>,值是2022-09-01 23:55:12
strftime()方法返回值信息:类型是<class 'str'>,值是2026/12/26 22:46:17
fromtimestamp()方法返回值信息:类型是<class 'datetime.datetime'>,值是2022-09-04 11:54:18.583933
时间格式
关于时间格式,参考文档:datetime — Basic date and time types
格式 | 描述 |
---|---|
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(0000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%M | 分钟数(00-59) |
%S | 秒(00-59) |
%j | 年内的一天(001-366) |
%I | 12小时制小时数(01-12) |
%U | 一年中的星期数(00-53)星期天为星期的开始,即是当年的第几周 |
%w | 星期(0-6),星期天为星期的开始 |
weekday()
根据时间对象datetime,获取时间在当周的周几
import datetime
now = datetime.datetime.now()
print(now)
print(f"weekday()返回是周几(周一为0,周二为1直至周日为6),结果为:{now.weekday()}")
执行结果为:
2022-09-04 12:57:40.968827
weekday()返回是周几(周一为0,周二为1直至周日为6),结果为:6
属性
datetime对象有一些属性,year:年,month:月,day:日,hour:时,minute:分,second:秒,microsecond:毫秒
import datetime
now = datetime.datetime.now()
info = f"{now.year}年{now.month}月{now.day}日 {now.hour}时{now.minute}分{now.second}秒,{now.microsecond}毫秒"
print(info)
执行结果为:
2022年9月4日 12时51分31秒,919087毫秒
timedelta
timedelta(days=0, seconds=0, microseconds=0,milliseconds=0, minutes=0, hours=0, weeks=0)
该方法需要导入datetime
timedelta.total_seconds()
方法返回时间差(以秒为单位)
import datetime
now = datetime.datetime.now()
print(f"当前时间是{now}")
time_1 = datetime.datetime(2025, 6, 21, 14, 23, 51)
# 30h前
yesterday = now + datetime.timedelta(hours=-30)
print(f"30h前的时间是:{yesterday}")
# 距离下一个国庆还有多少天
if now.month > 10 and now.day > 1:
next_year = datetime.datetime(now.year+1, 10, 1)
else:
next_year = datetime.datetime(now.year, 10, 1)
time_to_next = next_year - now
print(f"距离国庆还有{time_to_next.days}天,相差秒数为{time_to_next.total_seconds()}秒")
执行结果为:
当前时间是2022-09-04 15:33:52.090719
30h前的时间是:2022-09-03 09:33:52.090719
距离国庆还有26天,相差秒数为2276767.909281秒