内置模块之时间模块

内置模块之时间模块

在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:

  1. 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

  2. 格式化的时间字符串(Format String):'1049-10-1'

  3. 元组(struct_time):struct_time拥有9个元素:

    (年,月,日,时,分,秒,一年中第几周,一年中第几天等)

    索引(Index) 属性(Attribute) 值(Values)
    0 tm_year(年) 比如2011
    1 tm_mon(月) 1 - 12
    2 tm_mday(日) 1 - 31
    3 tm_hour(时) 0 - 23
    4 tm_min(分) 0 - 59
    5 tm_sec(秒) 0 - 60
    6 tm_wday(weekday) 0 - 6(0表示周一)
    7 tm_yday(一年中的第几天) 1 - 366
    8 tm_isdst(是否是夏令时) 默认为0

time模块

time模块时老朋友了,我们使用过停顿和时间戳功能:

import time
time.sleep(1)  # 程序等待1s后执行
time.time()  # 获取当前时间戳

这里介绍几个其他的功能

获取三种时间

时间字符串

time.strftime("%Y-%m-%d %X")  # 2022-10-19 16:28:12
time.strftime("%Y-%m-%d %H:%M:%S")  # 2022-10-19 16:28:12
# 其中%Y之类是专门用于时间的占位符
Y m d H M S X
时:分:秒

结构化时间(struct-time)

time.localtime()
"""
time.struct_time(tm_year=2022, tm_mon=10, 
tm_mday=19, tm_hour=16, tm_min=33, tm_sec=33, 
tm_wday=2, tm_yday=292, tm_isdst=0)
"""

时间戳由计算机识别,时间字符串是给人看的,而结构化时间则方便程序来进行操作并转换为其他两种时间格式。

三种时间类型的转换

时间戳-->结构化时间

time.gmtime(时间戳)  # UTC时间,英国伦敦时间
time.localtime(时间戳)  # 当地时间
# 两句语句都会得到结构化时间

结构化时间-->时间戳

time.mktime(结构化时间)  # 将当地的结构化时间变为时间戳

结构化时间-->字符串时间

time.strftime("格式定义","结构化时间")
# 不传结构化时间默认使用当前时间
time.strftime("%Y-%m-%d %X")
# 传了结构化时间则为结构化时间-->字符串时间
time.strftime("%Y-%m-%d", time.localtime(1555000000))
# 2019-04-12

字符串时间-->结构化时间

time.strptime('时间字符串','字符串对应格式')
# 会根据后面的格式来解析前面字符串中的对应数字
time.strptime('2019-04-12', '%Y-%m-%d')
"""
time.struct_time(tm_year=2019, tm_mon=4, 
tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, 
tm_wday=4, tm_yday=102, tm_isdst=-1)
"""

datetime模块

datetime是一种结构化时间,但是它也易于阅读:

如:2022-10-19 16:57:05.461014

利用datetime模块可以对这种结构化时间进行操作。

获取当前时间的datetime格式

from datetime import datetime  # 导入datetime包中的datetime模块

# 获取当前本地时间
a = datetime.now()
print('当前日期:', a)

# 获取当前世界时间(本初子午线)
b = datetime.utcnow()
print('世界时间:', b)

用指定日期时间创建datetime

from datetime import datetime

# 用指定日期创建
c = datetime(2008, 8, 8, 20, 0)
print('北京奥运会开幕式:', c)

字符串时间转换成datetime类型

与time模块的strptime一个用法,只不过得到的结构化时间是datetime:

from datetime import datetime
datetime.strptime('时间字符串','对应格式')

将datetime类型转换为字符串

与time模块的strftime一个用法,只不过是用datetime中取到的年月日等来构造字符串:

from datetime import datetime

i = datetime.now()  # 获取当前的datetime
i.strftime('%Y年%m月%d日%A,%H时%M分%S秒')
# 将其转换为指定格式的字符串时间

对datetime进行时间计算 (**)

import datetime

ctime = datetime.datetime.today()  # 获取当前时间
internal = datetime.timedelta(minutes=30)  # 获取一个时间间隔
print(ctime + internal)  # 计算得到30分钟后的时间
# 利用这个功能可以做闹钟
posted @ 2022-10-19 17:10  leethon  阅读(30)  评论(0编辑  收藏  举报