一、time—时间的访问和转换
该模块提供了各种与时间相关的函数。相关功能还可以参阅 datetime
和 calendar
模块。
尽管所有平台皆可使用此模块,但模块内的函数并非所有平台都可用。此模块中定义的大多数函数的实现都是调用其所在平台的C语言库的同名函数。因为这些函数的语义可能因平台而异,所以使用时最好查阅对应平台的相关文档。
二、常用函数
-
time.asctime
([t])转换由
gmtime()
或localtime()
所返回的表示时间的元组或struct_time
为以下形式的字符串:'Sun Jun 20 23:21:05 1993'
。 日期字段的长度为两个字符,如果日期只有一个数字则会以零填充,例如:'Wed Jun 9 04:26:40 1993'
。如果未提供 t,则会使用
localtime()
所返回的当前时间。asctime()
不会使用区域设置信息(简单理解,未提供参数,返回当前时间,只是显示时间的格式不同)能得到时间元组对象 time模块
print(time.localtime()) # 中国 在东八区 print(time.gmtime()) # 获取格林时间 0 时区
print(time.asctime()) # Mon Jan 11 10:12:40 2021 print(time.asctime(time.gmtime())) # Mon Jan 11 02:12:40 2021
-
time.ctime
([secs])转换以距离初始纪元的秒数表示的时间为以下形式的字符串:
'Sun Jun 20 23:21:05 1993'
代表本地时间。 日期字段的长度为两个字符,如果日期只有一个数字则会以零填充,例如:'Wed Jun 9 04:26:40 1993'
。如果 secs 未提供或为
None
,则使用time()
所返回的当前时间。ctime(secs)
等价于asctime(localtime(secs))
。ctime()
不会使用区域设置信息。print(time.ctime(0)) # 切换到 1970 print(time.ctime()) # 获取本地当前时间 等价 time.asctime(time.localtime())
-
time.mktime
(t)这是
localtime()
的反函数,它表示 local 的时间,而不是 UTC 。它返回一个浮点数,以便与time()
兼容。如果输入的值,不能表示有效时间则抛出OverflowErrir 或 ValueErrort为
struct_time
或者完整的 9 元组,# 转化为毫秒值 print(time.mktime(time.localtime())) # 1610332681.0
-
time.sleep
(secs)线程将被暂停执行 secs 秒,参数可以是浮点数,以表示更为精确的睡眠时长
此外,由于系统需要调度其他活动,实际暂停时长也可能比请求的时间长
-
time.strftime
(format[, t])转换一个元组或
struct_time
表示的由gmtime()
或localtime()
返回的时间到由 format 参数指定的字符串。如果未提供 t ,则使用由localtime()
返回的当前时间。 format 必须是一个字符串。如果 t 中的任何字段超出允许范围,则引发ValueError
。0是时间元组中任何位置的合法参数;如果它通常是非法的,则该值被强制改为正确的值。
以下指令可以嵌入 format 字符串中。它们显示时没有可选的字段宽度和精度规范,并被
strftime()
结果中的指示字符替换:指令 意义 %a
本地化的缩写星期中每日的名称。 %A
本地化的星期中每日的完整名称。 %b
本地化的月缩写名称。 %B
本地化的月完整名称。 %c
本地化的适当日期和时间表示。 %d
十进制数 [01,31] 表示的月中日。 %H
十进制数 [00,23] 表示的小时(24小时制)。 %I
十进制数 [01,12] 表示的小时(12小时制)。 %j
十进制数 [001,366] 表示的年中日。 %m
十进制数 [01,12] 表示的月。 %M
十进制数 [00,59] 表示的分钟。 %p
本地化的 AM 或 PM 。 %S
十进制数 [00,61] 表示的秒。 %U
十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)作为。在第一个星期日之前的新年中的所有日子都被认为是在第0周。 %w
十进制数 [0(星期日),6] 表示的周中日。 %W
十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)作为。在第一个星期一之前的新年中的所有日子被认为是在第0周。 %x
本地化的适当日期表示。 %X
本地化的适当时间表示。 %y
十进制数 [00,99] 表示的没有世纪的年份。 %Y
十进制数表示的带世纪的年份。 %z
时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中H表示十进制小时数字,M表示小数分钟数字 [-23:59, +23:59] 。 %Z
时区名称(如果不存在时区,则不包含字符)。 %%
字面的 '%'
字符。 -
time.strptime
(string[, format])根据格式解析表示时间的字符串。 返回值为一个被
gmtime()
或localtime()
返回的struct_time
。format
format 参数使用与
strftime()
;使用的指令相同的指令。它默认为匹配ctime()
返回格式的"%a %b %d %H:%M:%S %Y"`` 。如果 *string\*不能根据 \*format* 解析,或者解析后它有多余的数据,则引发 ValueError 。当无法推断出更准确的值时,用于填充任何缺失数据的默认值是
(1900, 1, 1, 0, 0, 0, 0, 1, -1) 。print(time.strptime("2020-10-21","%Y-%m-%d")) # 返回struct_time元组对象
-
【注】:string 和 format 都必须是字符串。**
strftime,strptime综合运用
time.strftime
(format[, t]),time.strptime
(string[, format])
# 有效时间字符串 ---- > 元组对象
print(time.strptime("2020-10-21","%Y-%m-%d")) # 返回struct_time元组 对象
# 将时间元组对象格式化 ---> 自己想要的时间字符格式
print(time.strftime("%Y年%m月%d日 %H:%M:%S",time.localtime())) # 返回的是 str类型
# 不指定第二个参数,默认是 time.localtime()
print(time.strftime("%Y年%m月%d日 %H:%M:%S"))
# 例如 后面的类 创建指的的时间,调用 timetuple() 方法即可以获取时间元组对象,可以利用 time.mktime() 转化毫秒值
'''
① date类:处理年、月、日;
② time类:处理时、分、秒;
③ datetime类:date类和time类的综合,处理年、月、日、时、分、秒;
④ timedelta类:主要用于做时间加减的;
⑤ tzinfo类:时区类
'''
d=date(2020,2,10)
print(d.timetuple())
# 使用time.mktime()转化毫秒值
print(time.mktime(d.timetuple())) # 1581264000.0
# 毫秒值也可以转换回去,利用date的类方法
seconds= time.mktime(d.timetuple())
print(date.fromtimestamp(seconds)) # 2020-02-10
三、time.struct_time对象
print(time.localtime())
'''
out
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=11, tm_hour=10, tm_min=44, tm_sec=16, tm_wday=0, tm_yday=11, tm_isdst=0)
'''
常用的属性如下
索引 | 属性 | 值 |
---|---|---|
0 | tm_year | (例如,1993) |
1 | tm_mon | range [1, 12] |
2 | tm_mday | range [1, 31] |
3 | tm_hour | range [0, 23] |
4 | tm_min | range [0, 59] |
5 | tm_sec | range [0, 61]; 见 strftime() 介绍中的 (2) |
6 | tm_wday | range [0, 6] ,周一为 0 |
7 | tm_yday | range [1, 366] |
8 | tm_isdst | 0, 1 或 -1;如下所示 |
N/A | tm_zone | 时区名称的缩写 |
N/A | tm_gmtoff | 以秒为单位的UTC以东偏离 |
参考python官方文档:https://docs.python.org/zh-cn/3/library/time.html?highlight=time#time.struct_time