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. 走进JavaWeb技术世界16:极简配置的SpringBoot

    一位阿里 Java 工程师的技术小站.作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时 ...

  2. 简单理解Spring之IOC和AOP及代码示例

    Spring是一个开源框架,主要实现两件事,IOC(控制反转)和AOP(面向切面编程). IOC 控制反转,也可以称为依赖倒置. 所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B, ...

  3. LuaJIT 之 FFI

    1. FFI 教程 原文: FFI Tutorial 相关链接:OpenResty 最佳实践之 FFI 加载 FFI 库 FFI 库时默认编译进 LuaJIT 中的,但是不会默认加载或初始化.因此,当 ...

  4. 如果项目在IIS发布后,出现System.ComponentModel.Win32Exception: 拒绝访问。

    如果项目在IIS发布后,出现System.ComponentModel.Win32Exception: 拒绝访问. 那么就试试下面的办法. 步骤如下: 应用程序池=>设置应用程序池默认设置 将标 ...

  5. selinux 开启和关闭

    对于新手来说,linux的selinux困扰了一大批学员,开启后,导致文件权限修改不了等问题,下面就是关闭设置setlinux的方法 查看SELinux状态: 1./usr/sbin/sestatus ...

  6. Flutter移动电商实战 --(47)详细页_Flutter_html插件的使用

    详情里面是hemlt和图片组成的,但是flutter是不支持html的所以需要其他插件 flutter webview plugin:这个不太好用 flutter_html:用这个插件 先解决之前一个 ...

  7. H5内嵌原生app

    前言 其实我们不管是从ios还是安卓都可以看出 原生app能内嵌H5的原因是因为有了webview这个app内嵌浏览器视图,从而使得我们可以开发html然后加载到app中(原理几乎跟pc端请求.加载. ...

  8. 从零配置webpack(react+less+typescript+mobx)

    本文目标 从零搭建出一套支持react+less+typescript+mobx的webpack配置 最简化webpack配置 首页要初始化yarn和安装webpack的依赖 yarn init -y ...

  9. Android向系统日历添加日程提醒事件

    在项目开发过程中,有时会有预约提醒.定时提醒等需求,这时我们可以使用系统日历来辅助提醒.通过向系统日历中写入事件.设置提醒方式(闹钟),实现到达某个特定的时间自动提醒的功能.这样做的好处是由于提醒功能 ...

  10. Linux怎样设置tomcat自启动

    --未验证 越来越多的人把tomcat部署在Linux下,但是linux下必须用命令才能启动tomcat,如果同一个服务器下tomcat部署几个的话,每次启动就很繁琐,能不能设置在linux系统启动时 ...