开放的编程资料库

当前位置:我爱分享网 > Python教程 > 正文

Python时间

Python时间教程展示了如何使用标准时间模块在Python中处理时间。

Python时间模块

time模块是一个标准的Python模块,包含时间访问和转换函数。请注意,此模块有局限性;例如,函数可能无法处理纪元之前或未来的日期和时间。

可以在标准datetimecalendar模块或第三方arrow模块中找到其他与时间相关的功能。

Python时间结构

包括time.gmtimetime.localtimetime.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教程。

未经允许不得转载:我爱分享网 » Python时间

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏