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. hadoop笔记-hdfs文件读写

    概念 文件系统 磁盘进行读写的最小单位:数据块,文件系统构建于磁盘之上,文件系统的块大小是磁盘块的整数倍. 文件系统块一般为几千字节,磁盘块一般512字节. hdfs的block.pocket.chu ...

  2. Java把多个list 合并成一个并去重

           开发过程中遇到一个合并去重问题,任务完成后,总结出来一个比较简单的方法.对于List中不同类型的数据,需要采用不同的处理方式.List中如果是基础数据类型,直接合并去重即可:如果是对象类 ...

  3. docker安装ubuntu以后无ifconfig命令解决办法

    解决: 1.apt-get  update 2.apt install net-tools   #ifcongig 3.apt install iputils-ping     # ping

  4. Vue中的动画效果

    Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.css ...

  5. [Andorid] 通过JNI实现kernel与app进行spi通讯

    CPU:RK3399 系统:Android 7.1 人脸识别的要求越来越高,因此主板增加了 SE 加密芯片,加密芯片通过 spi 接口与 CPU 通讯. 对于 kernel 层的代码,Linux 原始 ...

  6. Vue的axios如何全局注册

    最近用 Vue 写项目的时候,用到 axios ,因为 axios 不能用 Vue.use() ,所以在每个 .vue 文件中使用 axios 时就需要 import , .vue 文件少的话还好说, ...

  7. android.support.design库的引用和冲突解决

    android.support.design库的引用和冲突解决 转 https://www.jianshu.com/p/2a0a2af9f2b4 最近在工程中使用到android.support.de ...

  8. connections java.net.BindException: Address already in use_解决方案

    一.问题描述 在Linux服务器(CentOS7系统)中配置并启动JMeter远程监控服务器资源所需的ServerAgent目录下的 startAgent.sh 文件时,系统出现异常提示,如 [roo ...

  9. python中关于shutdown 和closesocket的彻底理解!

    关于shutdown 和closesocket的彻底理解! shutdown 和closesocket 来,咱们彻底的来讨论一下这个shutdown 和closesocket 从函数调用上来分析(ms ...

  10. Scala 踩坑系列

    scala List scala list 如果使用 list(i)的形式进行遍历,如果list数据太多,每次遍历耗时会很久. 因为有一个 head tail 的概念 . 和java的List根据角标 ...