python的time模块

        主要功能用于时间表示方法之间的转换程序的控制。在python用三种方式来表示时间,分别是时间戳、格式化时间字符串和结构化时间。time 模块的方法大部分是针对这几种时间格式进行输出,处理和转化

目录

一、时间对象

        1.时间戳(timestamp)

        2.时间元组(struct_time)

        3.格式化时间字符串

二、相互转换的一些方法:

1. 时间元组——时间戳

一些关于时区概念:

2. 时间元组——标准格式:

3. 时间戳——标准格式:time.ctime(<时间戳>)

其中转换关系如下:

三、程序时间控制

        1. time.sleep():

        2. time.perf_counter()

        3. time.process_time()

        例子区别:有一个0.5s的程序,process_time() 是不计sleep时间的


一、时间对象

        1.时间戳(timestamp)

        以格林威治时间1970年01月01日00时00分00秒为零点(北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒),开始计算的总秒数。对时间戳时间戳单位最适于做日期运算。1970年之前的日期无法以此表示。太遥远的日期也不行,UNIX和Windows只支持到2038年。

        时间戳通过 time.time() 来获取

import time
print(time.time())     #获取当前时间戳

1682237692.9241743

        2.时间元组(struct_time)

        python用一个元组封装起来的9组数字处理时间。struct_time元组就是这种结构。

序号字段属性
04位数年tm_year正整数
1tm_mon1 到 12
2tm_mday1到31
3小时tm_hour0到23
4分钟tm_min0到59
5tm_sec0到61 (60或61 是闰秒)
6一周的第几日tm_wday0到6 (0是周一)
7一年的第几日tm_yday1到366 (儒略历)
8夏令时tm_isdst-1, 0, 1, -1是决定是否为夏令时的旗帜

        时间元组可通过 time.localtime() 获取

print(time.localtime())    #获取当前结构化时间

time.struct_time(tm_year=2023, tm_mon=4, tm_mday=23, tm_hour=16, tm_min=14, tm_sec=52, tm_wday=6, tm_yday=113, tm_isdst=0)

        3.格式化时间字符串

        以文字格式输出的时间,python中时间日期格式化符号,就是年月日时分秒这样的我们常见的时间字符串

        python中时间日期格式化符号:

  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月内中的一天(0-31)
  • %H 24小时制小时数(0-23)
  • %h 月份的英文缩写
  • %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. 时间元组——时间戳

        (1)元组→时间戳 time.mktime

print(time.mktime((1999,4,26,14,30,27,0,0,0)))    #结构化时间元组-→时间戳
925108227.0

         (2)时间戳→元组 time.localtime 与time.gmtime

print(time.localtime(1234567890))    #时间戳→时间元组(当地):
print(time.gmtime(1234567890))        #时间戳→时间元组(格林威治)

#比较不同结果:区别在于此时是我国时间与格林威治时间,比我这里早了八小时
time.struct_time(tm_year=2009, tm_mon=2, tm_mday=14, tm_hour=7, tm_min=31, tm_sec=30, tm_wday=5, tm_yday=45, tm_isdst=0)

time.struct_time(tm_year=2009, tm_mon=2, tm_mday=13, tm_hour=23, tm_min=31, tm_sec=30, tm_wday=4, tm_yday=44, tm_isdst=0)

几个关于时区概念:

  • GMT:即格林威治标准时间。(目前只用到这个)
  • UTC:世界协调时间,与GMT类似,但比格林威治更精确。
  • DST:D即Daylight,表示夏令时。
  • CST:美国、澳大利亚、中国、古巴的标准时间。

详见:https://www.cnblogs.com/tosee/p/5538007.html

2. 时间元组——格式化字符串:

        (1)time.asctime(<tuple>)

print(time.asctime((1999,4,26,14,30,27,0,0,0)))    #由时间元组获取标准格式字符串

Mon Apr 26 14:30:27 1999

        (2)时间元组→自定义格式:time.strftime(<格式化的符号>,<时间元组>

print(time.strftime('%Y.%m.%d-%H:%M:%S',(1999,4,26,14,30,27,0,0,0)))  
#结构化时间元组获取自定义格式时间

1999.04.26-14:30:27

        (3) 指定格式→时间元组:time.strptime(<格式化时间>,<format>)

        需注意的是,提供的字符串要和 format 参数的格式一一对应。time.strftime()中的f代表format,可以记成str format time(字符串格式的时间) ;time.strptime()的p代表parse,可以记为str parse time(字符串解析成时间)。

print(time.strptime('1999/04/26 14:52:30',"%Y/%m/%d %H:%M:%S"))

time.struct_time(tm_year=1999, tm_mon=4, tm_mday=26, tm_hour=14, tm_min=52, tm_sec=30, tm_wday=0, tm_yday=116, tm_isdst=-1)

3. 时间戳——标准格式:time.ctime(<时间戳>)

print(time.ctime(1234567890))   #根据时间戳获取标准格式字符串

Sat Feb 14 07:31:30 2009

其中转换关系如下:

 图片源自:https://zhuanlan.zhihu.com/p/427830258 

三、程序时间控制

        1. time.sleep():

        推迟调用线程的运行的秒数:time.sleep(<秒数>)。

print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) #格式化当前时间
time.sleep(1)   # 暂停一秒
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

2023-04-24 11:10:41
2023-04-24 11:10:42

        2. time.perf_counter()

        返回一个CPU级别的精确时间计数值,包含整个系统的 sleep() 时间,单位为秒,由于这个计数值起点不确定,连续调用差值才有意义

start=time.perf_counter()
print(start)                    #起始时间
time.sleep(1)
end=time.perf_counter()
print(end)                      #结束时间
print(end-start)                #时间间隔

0.0263355
1.026681
1.0003454999999999

        3. time.process_time()

        返回的是当前进程的系统和用户CPU时间之和的值(以秒为单位)。它不包括 sleep() 经过的睡眠时间。

        例子区别:有一个0.5s的程序,process_time() 是不计sleep时间的

import time
a = 0
t1 = time.perf_counter()
for i in range(2**23):
    a = a + 1
t2 = time.perf_counter()
print(t2-t1)

0.5034770000000001                    #这个程序的运行时间是0.5s



import time
a = 0
t1 = time.perf_counter()
time.sleep(1)            #程序睡眠1秒
for i in range(2**23):
    a = a + 1
t2 = time.perf_counter()
print(t2-t1)

1.5027289                            #包含1s睡眠时间



#程序3
import time
a = 0
t1 = time.process_time()
time.sleep(1)            #程序睡眠1秒
for i in range(2**23):
    a = a + 1
t2 = time.process_time()
print(t2-t1) 
                       
0.5                                  #不包含1s的睡眠时间

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Pythontime.process_time()方法是一个返回当前进程执行的CPU时间的函数。它返回的是一个浮点数,表示的是以秒为单位的时间。这个方法的特点是它只计算CPU时间,不包括睡眠时间或者等待时间。这使得它在衡量代码性能和计算时间的时候非常有用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【项目Python时间选取,time()、perf_counter()和process_time()的区别】](https://blog.csdn.net/qq_42700796/article/details/125279723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python3.7中time模块time()、perf_counter()和process_time()的区别](https://blog.csdn.net/qq_27283619/article/details/89280974)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python 锁的使用 python锁的使用例程python2可以直接运行,提供示例程序,供学习参考](https://download.csdn.net/download/li171049/88228463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带带琪宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值