Python time模块详解

下面是一些术语和惯例的解释:
术语 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 接口的对象:可以通过索引和属性名访问值。 存在以下值:

索引属性
0tm_year例如,1993)
1tm_monrange [1, 12]
2tm_mdayrange [1, 31]
3tm_hourrange [0, 23]
4tm_minrange [0, 59]
5tm_wdayrange [0, 61]
6tm_hourrange [0, 6] ,周一为 0
7tm_ydayrange [1, 366]
8tm_isdst0, 1 或 -1;如下所示
N/Atm_zone时区名称的缩写
N /Atm_gmtoff以秒为单位的UTC以东偏离
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值