首页 time时间模块
pay pay

python time时间模块

日期: 2021年12月
栏目: time时间模块
阅读: 550
作者: Python自学网

时间的记录因为时区,传统,意义不同会有很多种不同的方式或者不同的结果来呈现对应的时间,比如我们的北京时间和华盛顿时间就相差十几个小时,再比如农历和阳历也存在记录差别,这时候我们就需要在编程语言中统一时间才能表达精准的时间,除此之外对于不同的时间也可以通过time模块进行简单的处理得到我们想要的结果。

一、了解时间

从时间的标准统一上来讲,我们主要分两种(这两种时间我们主要研究第一种):

  1. UTC(世界协调时间):格林尼治时间,中国是UTC+8
  2. DST(夏令时):百科https://baike.baidu.com/item/%E5%A4%8F%E4%BB%A4%E6%97%B6/1809579?fr=aladdin

 从时间的表现形式上来区分的话分为3中情况:

  1. 时间戳:从1970年1月1日到当前时间间隔,以整数或者浮点数表示,以秒为单位
  2. 元祖:用9个整型数据表示time.struct_time(tm_year=2021, tm_mon=9, tm_mday=16, tm_hour=11, tm_min=40, tm_sec=5, tm_wday=3, tm_yday=259, tm_isdst=0)(flag有三种情况1,-1,0:1表示夏令时,-1是根据当前情况自动判断,0表示正常格式)
  3. 格式化字符串:看下一个注释中的内容

 二、python中时间日期格式化符号

了解格式化输出时间的一些常用符号对于我们后面学习time时间模块有很大的帮助。

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%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 当前时区的名称
%% %号本身

三、时间戳和时间元祖操作

1.接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。

time.asctime([tupletime])

2.返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

res = time.time()  # 获取时间戳
print(res)

返回结果:

1637243656.6083195

3.将时间戳转为UTC时间元祖,注意这里不是北京时间(东八区时间)

t = time.gmtime(res)
print(t)

返回结果:

time.struct_time(tm_year=2021, tm_mon=11, tm_mday=18, tm_hour=13, tm_min=54, tm_sec=16, tm_wday=3, tm_yday=322, tm_isdst=0)

4.将时间戳转为本地时间元祖

bt = time.localtime(res)
print(bt)

返回结果:

time.struct_time(tm_year=2021, tm_mon=11, tm_mday=18, tm_hour=21, tm_min=54, tm_sec=16, tm_wday=3, tm_yday=322, tm_isdst=0)

5.将本地时间元祖转成时间戳

print(time.mktime(bt))

返回结果:

1637243656.0

6.接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。

print(time.localtime())  # 获取时间元祖
print(time.localtime(1120978225.2760954))  # 通过时间戳获取为时间元祖

返回结果:

time.struct_time(tm_year=2021, tm_mon=11, tm_mday=18, tm_hour=21, tm_min=54, tm_sec=16, tm_wday=3, tm_yday=322, tm_isdst=0)
time.struct_time(tm_year=2005, tm_mon=7, tm_mday=10, tm_hour=14, tm_min=50, tm_sec=25, tm_wday=6, tm_yday=191, tm_isdst=0)

四、格式化时间

1.格式化时间(可以对时间戳和时间元祖进行格式化)

print(time.ctime(time.time()))  # 把时间戳转成字符串
print(time.asctime(time.localtime(1120978225.2760954)))  # 把时间元祖转成字符串

返回结果:

Thu Nov 18 21:58:47 2021
Sun Jul 10 14:50:25 2005

2.接收以时间元组,并返回以可读字符串表示的当地时间,可以接受元祖转特定时间。

print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))  # 元祖转格式化

返回结果:

2021-11-18 21:58:47

3.根据fmt的格式把一个时间字符串解析为时间元组。

print(time.strptime('2021-05-14 15:57:09', '%Y-%m-%d %H:%M:%S'))  # 时间字符串转元祖

返回结果:

time.struct_time(tm_year=2021, tm_mon=5, tm_mday=14, tm_hour=15, tm_min=57, tm_sec=9, tm_wday=4, tm_yday=134, tm_isdst=-1)

五、CPU时间

一般用于计算代码或硬件处理性能,Python 3.8 已移除 clock() 方法 可以使用 perf_counter() 或 process_time() 方法替代。

start = time.perf_counter()
for i in range(0, 10000):
    print(i)
# end = clock()
end = time.perf_counter()
print(end - start)

# 推迟调用线程的运行,secs指秒数。
time.sleep(2)

 

目录
  • python time时间模块
回顶部