Python时间教程展示了如何使用标准时间模块在Python中处理时间。
Python时间模块
time
模块是一个标准的Python模块,包含时间访问和转换函数。请注意,此模块有局限性;例如,函数可能无法处理纪元之前或未来的日期和时间。
可以在标准datetime
和calendar
模块或第三方arrow
模块中找到其他与时间相关的功能。
Python时间结构
包括time.gmtime
、time.localtime
time.asctime
在内的几个函数与time.struct_time
一起工作对象。
time.struct_time(tm_year=2021, tm_mon=6, tm_mday=27, tm_hour=14, tm_min=12, tm_sec=20, tm_wday=6, tm_yday=178, tm_isdst=1)
这是一个时间结构的例子。
索引 | 属性 | 值 |
---|---|---|
0 | tm_year |
0000,….,2021,…,9999 |
1 | tm_mon |
1,2,…,12 |
2 | tm_mday |
1、2、…、31 |
3 | tm_hour |
0、1、…、23 |
4 | tm_min |
0,1,…,59 |
5 | tm_sec |
0、1、…、61 |
6 | tm_wday |
0,1,…,6;星期一是0 |
7 | tm_yday |
1,2,…,366 |
8 | tm_isdst |
0、1或-1 |
time.struct_time
对象的值可以使用索引和属性访问。我们可以使用time.asctime
函数将time.struct_time
转换为标准的人类可读字符串形式。
Python时间纪元
纪元是选择作为特定纪元起源的时间瞬间。Unix纪元是1970年1月1日世界标准时间00:00:00(或1970-01-01T00:00:00ZISO8601)。
#!/usr/bin/python import time e = time.gmtime(0) print(e) print(e.tm_year, e.tm_mon, e.tm_mday)
该示例打印平台的纪元
e = time.gmtime(0)
为了获得纪元,我们将0传递给time.gmtime
函数。
$ ./epoch.py time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) 1970 1 1
Python时间.时间
time.time
函数返回以秒为单位的时间,因为纪元是一个浮点数。
#!/usr/bin/python import time t = time.time() print(t)
该示例返回自纪元以来的时间(以秒为单位)。
$ date +%s 1624795343 $ ./time_fun.py 1624795347.1246026
Python时间.本地时间
time.localtime
函数将自纪元以来以秒表示的时间转换为本地时间的时间结构。
#!/usr/bin/python import time secs = time.time() loc_time = time.localtime(secs) print(f'local time: {loc_time}') print(loc_time.tm_year) print(loc_time.tm_mon) print(loc_time.tm_mday) print('-------------------------') print(loc_time[0]) print(loc_time[1]) print(loc_time[2])
我们使用time.time
函数获取经过的秒数,并将其传递给time.localtime
函数。我们得到了
$ ./loc_time.py local time: time.struct_time(tm_year=2021, tm_mon=6, tm_mday=27, tm_hour=14, tm_min=20, tm_sec=15, tm_wday=6, tm_yday=178, tm_isdst=1) 2021 6 27 ------------------------- 2021 6 27
Python时间.ctime
time.ctime
函数将自纪元以来以秒表示的时间转换为特定的字符串格式,表示本地时间。
#!/usr/bin/python import time secs = time.time() loc_time = time.ctime(secs) print(f'local time: {loc_time}')
该示例使用time.ctime
函数将自纪元以来的秒数表示为人类可读的时间格式。
$ ./loc_time2.py local time: Sun Jun 27 14:46:18 2021
Python时间.gmtime
time.gmtime
将自纪元以来以秒表示的时间转换为UTC时间结构。
有一个全球时间的实用需求。一个全球时间有助于避免时区和夏令时的混淆。UTC(通用协调时间)被选为主要时间标准。UTC用于航空、天气预报、飞行计划、空中交通管制许可和地图。与当地时间不同,UTC不随季节变化而变化。
#!/usr/bin/python import time utc = time.gmtime() print(utc) print('--------------------') print(utc.tm_year) print(utc.tm_mon) print(utc.tm_mday) print(utc.tm_hour)
该示例打印世界时间。
$ ./utc_time.py time.struct_time(tm_year=2021, tm_mon=6, tm_mday=27, tm_hour=12, tm_min=55, tm_sec=31, tm_wday=6, tm_yday=178, tm_isdst=0) -------------------- 2021 6 27 12
Python时间.asctime
time.asctime
函数将time.struct_time
转换为标准的人类可读字符串形式。
#!/usr/bin/python import time loc = time.localtime() utc = time.gmtime() print(time.asctime(loc)) print(time.asctime(utc))
在time.asctime
的帮助下,我们打印本地时间和UTC时间。
$ ./asc_time.py Sun Jun 27 15:06:15 2021 Sun Jun 27 13:06:15 2021
Python时间.strptime
time.strptime
函数根据指定的格式解析表示时间的字符串。返回值为时间结构。
#!/usr/bin/python import time v1 = '2021-06-25' v2 = '25/11/2020' d1 = time.strptime(v1, '%Y-%m-%d') print(time.asctime(d1)) d2 = time.strptime(v2, '%d/%m/%Y') print(time.asctime(d2))
以两种不同格式表示的示例日期。
$ ./parse_time.py Fri Jun 25 00:00:00 2021 Wed Nov 25 00:00:00 2020
Python时间.strftime
time.strftime
函数将表示atime的时间结构转换为格式参数指定的字符串。
#!/usr/bin/python import time loc = time.localtime() print(time.strftime('%Y-%m-%d', loc)) print(time.strftime('%c', loc)) print(time.strftime('%A', loc)) print(time.strftime('%B', loc)) print(time.strftime("%H:%M:%S", loc))
该示例使用time.localtime
获取以时间结构表示的本地时间。然后将返回值格式化为不同的时间格式。
$ ./format_time.py 2021-06-27 Sun Jun 27 15:17:37 2021 Sunday June 15:17:37
在本教程中,我们使用了Python中的时间模块。
列出所有Python教程。