Python——time模块

python中有许多关于时间的模块,这里记录一下。

基本概念

☁️ 时间戳

首先得介绍一下时间戳的概念:啥是时间戳呢?官方地讲,就是一个能表示一份数据再某个特定时间之前已经存在的、完整的、可验证的数据。那么通俗一点地讲,就是指格林尼治时间1970年01月01日00时00分00秒到现在的总秒数

☁️ 格式化符号

为了后面的理解,我们需要直到python中经常使用到的一些特殊的符号来格式化时间日期,类似于字符串格式化中的“ %s ”、“ %d ”等。

符号 含义
%y 两位数的年份表示(00~99)
%Y 四位数的年份表示(0000~9999)
%m 月份(01~12)
%d 月内的一天
%H 24小时制的小时数(0~23)
%I 12小时制的小时数(01~12)
%M 分钟数(00~59)
%S 秒(00~59)
%a 本地简化的星期名称
%A 本地完整的星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001~366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00~53),星期天一个星期的开始
%w 星期(0~6),星期天为一个星期的开始
%W 一年中的星期数(00~53)
%x 本地相应的日期表示
% X本地相应的时间表示
%Z 当前时区的名称

上面是否看得你眼花缭乱?没错,我也是
Python——time模块_第1张图片
别急!下面还有一点点

☁️ 时间元组

python中很多函数用一个元组装起来的九组数字处理时间:

序号 字段 :值
0 4位数的年 2022
1 1~12
2 1~31
3 小时 0~23
4 分钟 0~59
5 0~61
6 一周的第几日 0~6(0是周一)
7 一年的第几日 1~366(儒略历)
8 夏令时 -1,0,1(-1是决定是否为夏令时的旗帜)

上面的元组也就是time模块中的struct_time对象,这种结构具有如下属性:

序号 属性
0 tm_year 2022
1 tm_mon 1~12
2 tm_mday 1~31
3 tm_hour 0~23
4 tm_min 0~59
5 tm_sec 0~61(60或61是闰秒)
6 tm_wday 0~6
7 tm_yday 1~366(儒略历)
8 tm_isdst -1,0,1(夏时令)

害,这东西可是真多啊。啥又是儒略历,啥又是夏令时?对此我也是很费解啊,赶紧去百度了一下。
在这里插入图片描述
儒略历:就是公历的前身,一年被划分为12个月,大小月交替;四年一闰,平年365日,闰年366日为在当年二月底增加一闰日,年平均长度为365.25日。但是在实际使用过程中导致积累的误差随时间越来越大,就变成公历了~~

夏时令:这个就是人为地规定的为节约能源的制度。大概就是在夏季的时候,人为将时间提前一小时,减少照明量…我国以前也实行过,不过后来就取消了。

好了好了,科普结束,回到正题
Python——time模块_第2张图片
首先要说明一点啊,日期和时间的区别啊,我现在的理解大概就是日期是年月日,时间呢就是时分秒,以前我老是分不清楚。

time模块

time模块中呢,就主要介绍几个常用的函数。

☁️ time()

time函数用于返回当前时间的时间戳,没错,就是那个啥格林尼治时间到现在的秒数。记录一下现在的时间是2022.8.30 22:00,请看下面例子:

import time

a = time.time()
print(a)
#1661868092.4191587

可以看出,它返回的是一个浮点数

☁️ localtime()

该函数是将时间戳格式化为本地时间,返回struct_time对象。它有一个参数用于接收时间戳,如果调用函数时不提供时间戳(注意是提供秒数哦,很大的),它会默认使用当前时间戳。例如:

import time

a = time.localtime()
print(a)
#time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=11, tm_sec=49, tm_wday=1, tm_yday=242, tm_isdst=0)
import time

a = time.localtime(0)
print(a)
#time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

可以看到如果提供0的时间戳,它返回的就恰好是那个格林尼治时间。同时它返回的也是struct_time类型。

☁️ mktime()

它接收struct_time对象作为参数,它返回的是用秒数来表示时间的浮点数(该浮点数小数后面全是0,前面time.time()返回的浮点数小数后面就不全为0),就是从格林尼治时间到某年某月某日某时某分某秒的秒数。它的参数可以是结构化的时间。

import time

a = (2022,8,30,22,19,40,1,1,0)
print(time.mktime(a))
#1661869180.0
print(time.localtime(time.mktime(a)))
#time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=19, tm_sec=40, tm_wday=1, tm_yday=242, tm_isdst=0)

可以看出,mktime函数可以用时间元组作为参数,也可以使用time_struct对象作为参数。

☁️ gmtime()

它能将一个时间戳转换为UTC的struct_time,参数为时间戳,默认参数为当前时间戳(也就是time.time())。那么,啥是UTC?科普时间到!

UTC,协调世界时,也叫世界标准时间,它是以原子时秒长在时刻上尽量接近于世界时的一种时间计量系统。具体的你们得就去问度娘了~~
例如:

import time

print(time.gmtime())
#time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=14, tm_min=34, tm_sec=26, tm_wday=1, tm_yday=242, tm_isdst=0)
print(time.gmtime(0))
#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)

☁️ asctime()

它接收时间元组并返回一个形式为“ Tue Aug 30 22:36:35 2022 ”的24个字符的字符串(空格也要算)。它接收的参数可以是时间元组也可以是time_struct对象。例如:

import time

a = (2022,8,30,22,36,35,1,1,0)
print(time.asctime(a))
#Tue Aug 30 22:36:35 2022
print(time.asctime(time.localtime()))
#Tue Aug 30 22:39:44 2022

我是结合自身这边时间来做的哈。

☁️ ctime()

它能把一个时间戳转化为time.asctime()形式。参数为时间戳,默认为当前时间戳(也就是time.time()),它的作用相当于执行time.asctime(localtime())。(哎,不得不吐槽一句,这是真复杂啊)例如:

import time

print(time.ctime())
#Tue Aug 30 22:42:52 2022

☀️ sleep()

这个函数是重点啊,圈起来圈起来。

它用于推迟调用线程的运行,参数为秒数,表示进程挂起的时间。也就是我让你睡多久你就必须睡多久!例如:

import time

print("进程睡觉前:%s" % time.ctime())
time.sleep(5)
print("进程起床后:%s" % time.ctime())
#进程睡觉前:Tue Aug 30 22:47:35 2022
#进程起床后:Tue Aug 30 22:47:40 2022

☁️ strftime()

它有两个参数,一个是format格式化符号,另一个是就是时间元组,并返回以一个字符串表示的当地时间,格式由参数format决定,也就是前面的格式化符号。例如:

import time

a = (2022,8,30,23,3,11,1,1,0)
b = time.mktime(a)
print(time.strftime("%b %d %Y %H:%M:%S",time.gmtime(b)))
#Aug 30 2022 15:03:11

☁️ strptime()

根据指定的格式把一个时间字符串解析为时间元组(time_struct对象)。它有两个参数,一个是字符串,另一个是format格式化符号,例如:

import time

a = time.strptime("Aug 30 2022 23:06:54","%b %d %Y %H:%M:%S")
print(a)
#time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=23, tm_min=6, tm_sec=54, tm_wday=1, tm_yday=242, tm_isdst=-1)

time模块到这里就结束啦。不仅是自己复习一遍,也希望能对大家有所帮助。
Python——time模块_第3张图片

你可能感兴趣的:(python学习笔记,python,开发语言)