关于time模块的学习总结

1、Python中时间格式有三种:时间戳(Timestap)、时间元组(Struct_time)、字符串时间(Format string)。

下面来介绍下这三个时间

时间戳(Timestap):

例:

1 import time
2 print(time.time())

输出:

1664370911.143787

通过time.time()可以获得一个float型的数据,这个值是从1970纪元到现在这个时刻经过的浮点秒数。所以时间戳就是一个秒数。

时间元组(Struct_time):

1 import time
2 time1 = time.localtime()
3 print(type(time1))
4 print(time1)

输出:

<class 'time.struct_time'>

time.struct_time(tm_year=2022, tm_mon=9, tm_mday=28, tm_hour=21, tm_min=25, tm_sec=53, tm_wday=2, tm_yday=271, tm_isdst=0)

通过结果输出结果来看,虽然我们叫时间元组,但是并不是一个元组,而是一个特有的关于时间的数据结构。如果想获得这个“元祖”里的某一个值,比如年或者月,可以用索引获取。

例如,time1[0]的方式可以获得年,time1[1]可以获得月。当然Python里是有对应的类,所以可以通过属性获得。例如time1. tm_year可以获得年,time1. tm_mon可以获得月。

字符串时间(Format string):

如果说时间戳是给计算机看的,那么字符串时间就是给人看的。

例如:'2020-08-28:15:20:28'

2、三种时间的一个转换关系

(1)时间元组(Struct_time)转成字符串时间(Format string)

——time.strftime(format, p_tuple=None)

Strftime()参数有两个,format是字符串时间格式,必须写不能空缺;p_tuple是时间元组,可以空缺,如果空缺默认为当前时间。也就是说函数功能是将第二种数据类型转为第一种数据类型。

例如,我们想将现在的时间通过“2020-1-28 8:15:00”的形式表示出现在的时间来,要先将字符串格式定义好,即'%Y-%m-%d %H:%M:%S'。

具体格式可以参照下表:

 

 

时间戳的话用当前的时间,通过time.localtime()获得。综上所述:

1 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))

输出:

2022-09-28 22:33:27

(2)字符串时间(Format string)转成时间元组(Struct_time)

               ——time.strptime(string, format)

在上一个例子中,我们获得的时间元祖是通过time.localtime()获得的,如果我们想创建一个时间元组,设置特定的时间点,该如何做呢?可以利用字符串时间转成时间元组。使用time.strptime()。

这个函数可以理解为是time.strftime()反过程,string相当于strftime()的返回结果,format就是strftime()中的format,通过%所表述的时间格式。

例如:

print(time.strptime("2022-09-28 22:33:27",'%Y-%m-%d %H:%M:%S'))

输出:

time.struct_time(tm_year=2022, tm_mon=9, tm_mday=28, tm_hour=22, tm_min=33, tm_sec=27, tm_wday=2, tm_yday=271, tm_isdst=-1)

(3)时间元组(Struct_time)转成时间戳(Timestap)

——mktime(p_tuple),参数为时间元组。

例如:

print(time.mktime(time.localtime()))

输出:

1664376976.0

前边提到过time.localtime()可以获得当前的时间元组,当然可以通过(2)部分自己构造一个特定的时间元组,这里不再尝试。

(4)时间戳(Timestap)转成时间元组(Struct_time)

           ——gmtime(seconds=None)参数为浮点数的秒,空缺默认为当前时间戳。
例如:
print(time.gmtime(1664376976.0))

time.struct_time(tm_year=2022, tm_mon=9, tm_mday=28, tm_hour=14, tm_min=56, tm_sec=16, tm_wday=2, tm_yday=271, tm_isdst=0)

time.gmtime()的用法看起来和time.localtime()都可以获得struct_time类型的时间元组,但是略有区别。

print(time.gmtime())
print(time.localtime())

输出:

time.struct_time(tm_year=2022, tm_mon=9, tm_mday=28, tm_hour=15, tm_min=8, tm_sec=45, tm_wday=2, tm_yday=271, tm_isdst=0)

time.struct_time(tm_year=2022, tm_mon=9, tm_mday=28, tm_hour=23, tm_min=8, tm_sec=45, tm_wday=2, tm_yday=271, tm_isdst=0)

简单来说,time.gmtime()获得的是UTL时间,time.localtime()获得的是北京时间。这两个时间相差8个小时。什么是UTL时间,大家可以自行查阅。

posted @ 2022-09-28 23:40  理工—王栋轩  阅读(115)  评论(0编辑  收藏  举报