下面是一些术语和惯例的解释:
术语 Unix 纪元秒数 是指自国际标准时间 1970 年 1 月 1 日零时以来经过的总秒数,通常不包括 闰秒。 在所有符合 POSIX 标准的平台上,闰秒都会从总秒数中被扣除。
UTC是协调世界时(以前称为格林威治标准时间Greenwich Mean Time,或GMT)。缩写UTC不是错误,而是英语和法语之间的妥协。
DST是夏令时 在一年中的一部分时间(通常)调整时区一小时。 DST规则很神奇(由当地法律确定),并且每年都会发生变化。 C 库有一个包含本地规则的表(通常是从系统文件中读取以获得灵活性),并且在这方面是True Wisdom的唯一来源。
time模块中时间表现的格式主要有三种:
A、timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
B、struct_time时间元组,共有九个元素组。
C、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
时间格式转换图:
A 、timestamp
生成timestamp
time.time() → float 返回当前时间戳,浮点数形式。不接受参数
t1 = time.time()
print(t1)
1629531862.6354573
struct_time to timestamp
time.mktime(t) 将本地时间元组转换为时间戳。接受一个时间元组,必选。
t2 = time.mktime(time.localtime())
t3 = time.mktime(time.gmtime())
print(t2)
print(t3)
1629533020.0
1629504220.0
B、struct_time
生成struct_time
time.localtime([secs]) 将时间戳转换为本地时间元组格式。接受一个浮点型时间戳参数,其默认值为当前时间戳。
t4 = time.localtime()
t5 = time.localtime(t1)
print(t4)
print(t5)
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=21, tm_hour=16, tm_min=6, tm_sec=4, tm_wday=5, tm_yday=233, tm_isdst=0)
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=21, tm_hour=16, tm_min=6, tm_sec=4, tm_wday=5, tm_yday=233, tm_isdst=0)
timestamp to struct_time 格林威治时间
time.gmtime([secs]) 将时间戳转换为UTC时间元组格式。接受一个浮点型时间戳参数,其默认值为当前时间戳。
t6 = time.gmtime()
t7 = time.gmtime(t1)
print(t6)
print(t7)
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=21, tm_hour=8, tm_min=8, tm_sec=4, tm_wday=5, tm_yday=233, tm_isdst=0)
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=21, tm_hour=8, tm_min=8, tm_sec=4, tm_wday=5, tm_yday=233, tm_isdst=0)
format_time to struct_time
time.strptime(string[, format]) 将指定格式的时间字符串解析为时间元组,strftime()的逆向过程。接受字符串,时间格式2个参数,都是必选。
t8 = time.strptime('2021-08-21 16:10:20', '%Y-%m-%d %X')
t9 = time.strptime('2021-08-21 16:10:20', '%Y-%m-%d %H:%M:%S')
print(t8)
print(t9)
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=21, tm_hour=16, tm_min=10, tm_sec=20, tm_wday=5, tm_yday=233, tm_isdst=-1)
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=21, tm_hour=16, tm_min=10, tm_sec=20, tm_wday=5, tm_yday=233, tm_isdst=-1)
生成format_time
生成固定格式的时间表示格式
time.asctime([t]) 将时间元组格式转换为字符串形式。接受一个时间元组,其默认值为localtime()返回值
t10 = time.asctime()
t11 = time.asctime(t4)
print(t10)
print(t11)
Sat Aug 21 16:20:31 2021
Sat Aug 21 16:20:31 2021
time.ctime([secs]) 将时间戳转换为字符串。接受一个时间戳,其默认值为当前时间戳。等价于asctime(localtime(seconds))
t12 = time.ctime()
t13 = time.ctime(t1)
print(t12)
print(t13)
Sat Aug 21 16:22:26 2021
Sat Aug 21 16:22:26 2021
struct_time to format_time
time.strftime(string[, format]) 将时间元组以指定的格式转换为字符串形式。接受字符串格式化串、时间元组。时间元组为可选,默认为localtime()
t14 = time.strftime('%Y%m%d%H%M%S')
t15 = time.strftime('%Y-%m-%d %X', t4)
print(t14)
print(t15)
20210821163033
2021-08-21 16:30:33
time.sleep(secs)
暂停执行调用线程达到给定的秒数。参数可以是浮点数,以指示更精确的睡眠时间。实际的暂停时间可能小于请求的时间,因为任何捕获的信号将在执行该信号的捕获例程后终止 sleep() 。此外,由于系统中其他活动的安排,暂停时间可能比请求的时间长任意量。
import time
while True:
time.sleep(1)
t1 = time.strftime('%Y-%m-%d %H:%M:%S')
print(t1)
以下指令可以嵌入 format 字符串中。它们显示时没有可选的字段宽度和精度规范,并被 strftime() 结果中的指示字符替换:
指令 | 含义 |
---|---|
%a | 本地化的缩写星期中每日的名称。 |
%A | 地化的星期中每日的完整名称。 |
%b | 本地化的月缩写名称。 |
%B | 本地化的月完整名称。 |
%c | 本地化的适当日期和时间表示。 |
%d | 十进制数 [01,31] 表示的月中日。 |
%H | 十进制数 [00,23] 表示的小时(24小时制)。 |
%I | 十进制数 [01,12] 表示的小时(12小时制)。 |
%j | 十进制数 [001,366] 表示的年中日。 |
%m | 十进制数 [01,12] 表示的月。 |
%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 | 时区名称(如果不存在时区,则不包含字符)。 |
%% | 字面的 ‘%’ 字符。 |
class time.struct_time
返回的时间值序列的类型为 gmtime() 、 localtime() 和 strptime() 。它是一个带有 named tuple 接口的对象:可以通过索引和属性名访问值。 存在以下值:
索引 | 属性 | 值 |
---|---|---|
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_wday | range [0, 61] |
6 | tm_hour | 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以东偏离 |