Python中提供处理时间日期相关的内置模块有time、datetime和calendar。

time模块中大多数函数调用了所在平台C library 的同名函数,因此更依赖于操作系统层面,所以time模块的有些函数与平台相关,在不同的平台上可能会有不同的效果,这点需要特别注意下,即time模块的功能并不适用于所有平台。

使用时需要导入time模块,如下所示:

import time

time模块的时间表现的格式主要有以下三种:

  • timestamp时间戳。时间戳表示的是从新纪元开始按秒计算的偏移量,任何操作系统都可以运行time.gmtime(0)查找此系统的新纪元。对于时间戳的最大极限日期取决于系统中C函数库所支持的日期,对于32位系统而言为2038年,如果需要处理在所述范围之外的日期,则需要考虑使用datetime模块。如下所示:
#查找此系统的新纪元
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) #生成当前时间的timestamp
print(time.time())#1556973222.546307
  • struct_time时间元组,共有九个元素组,gmtime()、localtime()和strptime()都以时间元祖(struct_time)的形式返回。如下所示:

#生成struct_time
print(time.localtime())#time.struct_time(tm_year=2019, tm_mon=5, tm_mday=11, tm_hour=12, tm_min=20, tm_sec=58, tm_wday=5, tm_yday=131, tm_isdst=0)
  • format time格式化时间。格式化的结构可使得时间更具有可读性,主要有自定义格式和固定格式两种,比如:
#生成format_time
#生成自定义格式的时间表示格式
print(time.strftime("%Y-%m-%d %X",time.localtime()))#2019-05-04 20:40:01
#生成固定格式的时间表示格式 叉车配件
print(time.asctime(time.localtime()))#Sat May 11 19:45:16 2019
print(time.ctime(time.time()))#Sat May 11 19:45:16 2019
print(time.ctime(time.time()+10))#Sat May 11 19:45:26 2019

time模块中timestamp、struct_time和format time三种时间格式按以下方式转换:

#struct_time to timestamp  note:time.localtime()——struct_time
print(time.mktime(time.localtime()))
#1556975223.0 # timestamp to struct_time 格林威治时间 note:time.time()——timestamp
print(time.gmtime(time.time()))
#time.struct_time(tm_year=2019, tm_mon=5, tm_mday=11, tm_hour=4, tm_min=20, tm_sec=58, tm_wday=5, tm_yday=131, tm_isdst=0) #format_time to struct_time
print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
#time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1) #struct_time to format_time
print(time.strftime("%Y-%m-%d %X"))#2019-05-11 08:45:48
print(time.strftime("%Y-%m-%d %X",time.localtime()))#2019-05-11 08:45:48

关于time.asctime()和time.ctime()在上文中已经提到,可以分别将struct_time和timestamp时间格式生成固定的format time格式。

time模块中关于系统时间的处理有如下几个函数:

time.clock()以秒为单位返回当前CPU运行时间,用于衡量不同程序的耗时,比time.time()更实用。不过在Python3.3之后就不推荐使用,原因是该方法依赖于操作系统,官方建议使用per_counter(返回系统运行时间)或process_time(返回进程运行时间)代替。如下所示:

print(time.clock())#0.221209
#DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead

time.perf_counter()返回系统的运行时间(计时器的精准时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以只有连续调用的结果之间的差才是有效的。如下所示:

print(time.perf_counter())#4.373607855
time.sleep(5)
print(time.perf_counter())#9.374290978

time.process_time()返回当前进程执行CPU的时间总和,不包含睡眠时间.由于返回值的基准点是未定义的,所以只有连续调用的结果之间的差才是有效的。如下所示:

print(time.process_time())#0.385954
time.sleep(5)
print(time.process_time())#0.385982

time.sleep(secs)推迟调用线程的运行,secs的单位是秒。如下所示:

time.sleep(5)

Python基础系列讲解——时间模块详解大全之time模块的更多相关文章

  1. python编程系列---args与kwargs详解

    args与kwargs详解 """ Process([group [, target [, name [, args [, kwargs]]]]]) - target:目 ...

  2. Python基础系列讲解——random模块随机数的生成

    随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入ran ...

  3. Python基础系列讲解——TCP协议的socket编程

    前言 我们知道TCP协议(Transmission Control Protocol, 传输控制协议)是一种面向连接的传输层通信协议,它能提供高可靠性通信,像HTTP/HTTPS等网络服务都采用TCP ...

  4. Python基础系列讲解-自动控制windows桌面

    原链接:https://zhuanlan.zhihu.com/p/73001806 在使用PC时与PC交互的主要途径是看屏幕显示.听声音,点击鼠标和敲键盘等等.在自动化办公的趋势下,繁琐的工作可以让程 ...

  5. Python基础系列讲解——try_except异常处理机制

    在Python编程中不可避免的会出现错误,在调试阶段出现语法之类的错误时,Pycharm会在Debug窗口提示错误,但是程序在运行时由于内部隐含的问题而引起错误,会导致程序终止执行.比如以下例程中,使 ...

  6. Go基础系列:Go slice详解

    slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值.在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结 ...

  7. Python基础数据类型-函数传参详解

    Python基础数据类型-函数传参详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位置参数 #!/usr/bin/env python #_*_coding:utf-8_* ...

  8. Python基础系列讲解——继承派生和组合的概念剖析

    Python作为一门面向对象的语言,它的面向对象体系中主要存在这么两种关系,一个是“类”和“实例”的关系,另一个是“父类”和“子类”的关系. 所谓“类”是从一堆对象中以抽象的方式把相同的特征归类得到的 ...

  9. Python基础系列讲解—动态类型语言的特点

    前言 在C语言中变量所分配到的地址是内存空间中一个固定的位置,当我们改变变量值时, 对应内存空间中的值也相应改变.在Python中变量存储的机制是完全不一样的,当给一个变量赋值时首先解释器会给这个值分 ...

随机推荐

  1. (转)代码审计利器-RIPS实践

    一.代码审计工具介绍 代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率. 在源代码的静态安全审计中,使用自动化工具辅助人工漏洞挖掘,一款好的代码审计软件,可以显著提高审计工作的效 ...

  2. 一个简单的python实现百度登录操作

    conftest作为全局调用,用于登录之后的其他元素使用,且保持登录状态的操作 在开始前需要搭建好测试环境,环境包含python+webdriver+浏览器驱动(此处为firefox) 1.conft ...

  3. [HNOI2011]括号修复 / [JSOI2011]括号序列

    传送门 Solution 一道题花费了两天的时间-- 在大佬@PinkRabbit的帮助下,终于AC了,感动-- 首先,我们考虑一个括号序列被修改成合法序列需要的次数: 我们需要修改的其实是形如... ...

  4. BZOJ1856[Scoi2010]字符串——组合数学+容斥

    题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgww想要知道满足 ...

  5. 调整 全局jvm 大小 tomcat 调整jvm大小

    z最近公司换了一个线上的windows服务器,原来的内存48g,现在2g.项目启动报内存不足.又重新安装jre 安装jre 教程链接:(谢谢各位博友) https://www.genban.org/t ...

  6. Radix Heap ---Dijkstra算法的优化 BY Gremount

    Radix Heap 算法是在Dijkstra的Dial实现的基础上,通过减少对桶的使用,来优化算法的时间复杂度: Dial 时间复杂度是O(m+nC)     -------C是最长的链路 Radi ...

  7. XGBoost、LightGBM、Catboost总结

    sklearn集成方法 bagging 常见变体(按照样本采样方式的不同划分) Pasting:直接从样本集里随机抽取的到训练样本子集 Bagging:自助采样(有放回的抽样)得到训练子集 Rando ...

  8. Flutter移动电商实战 --(46)详细页_自定义TabBar Widget

    主要实现详情和评论的tab provide定义变量 自己做一个tab然后用provide去控制 定义两个变量来判断是左侧选中了还是右侧选中了.并定义一个方法来接受参数,修改是左侧还是右侧选中的状态值 ...

  9. uboot移植spi驱动

    记录一下在uboot内移植spi驱动的过程 芯片:freescale Mpc8308 uboot版本:u-boot-2009.11-rc1.2 需求:我们需要在uboot下通过spi配置一个时钟芯片( ...

  10. VS版本 与 VC版本 的对应关系

    Visual Studio 6 : vc6Visual Studio 2003 : vc7Visual Studio 2005 : vc8Visual Studio 2008 : vc9Visual ...