python 模块学习——time模块
Python语言中与时间有关的模块主要是:time,datetime,calendar
time模块中的大多数函数是调用了所在平台C library的同名函数, 所以要特别注意有些函数是平台相关的,可能会在不同的平台有不同的效果。
另外一点是,由于是基于Unix Timestamp,所以其所能表述的日期范围被限定在 1970 - 2038 之间,如果你写的代码需要处理在前面所述范围之外的日期,那可能需要考虑使用datetime模块更好。
名词解释:UTC时间
UTC时间(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时
Python中时间有3种表现方式,分别是:
1.时间戳
时间戳表示的是从1970年1月1日 00:00:00开始到现在时间的偏移量,以秒计算的值(float类型)。返回时间戳方式的方法主要有time(),clock()等。
time()方法返回的值:从纪元开始(1970年1月1日 00:00:00)以秒为单位的当前UTC时间(float类型)
>>> time.time() #返回当前UTC时间的时间戳
1510885126.5995045
clock()方法返回的值:
首先关于这个方法的注释是这样写的:
Return the CPU time or real time since the start of the process or since
the first call to clock(). This has as much precision as the system
records.
clock翻译过来的意思就是 计时器
precision翻译过来的意思就是 精确
这两个单词很好的表达了这个方法所实现的功能。
clock()方法,在不同的系统上含义不同。 在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。
而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次 之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为 精确)
>>> time.clock()
3.5378305527754105e-06
>>> time.clock()
5.703646194302607
>>> time.clock()
17.30329184519444
第一个clock()输出的是程序运行时间
第二、三个clock()输出的都是与第一个clock的时间间隔
2.struct_time(元组格式的时间对象)
struct_time元组共有9个元素,返回struct_time时间对象的方法主要有 gmtime()、localtime()、strptime()。
下图表示struct_time元组包含的9个元素分别表示什么含义:
tm_wday(weekday)的值是:0~6(0表示周日)
gmtime([secs])方法将一个时间戳转换为 UTC时间的struct_time时间对象格式。没有参数时,默认当前时间
>>> time.gmtime()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=2, tm_min=29, tm_sec=35, tm_wday=4, tm_yday=321, tm_isdst=0)
localtime([secs])方法将一个时间戳转换为 当前时区的struct_time时间对象格式。没有参数时,以当前时间为准
>>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=10, tm_min=29, tm_sec=42, tm_wday=4, tm_yday=321, tm_isdst=0)
strptime()方法将一个时间字符串转换为struct_time时间对象格式。和strftime()是逆操作
>>> time.strptime("2017/11/17","%Y/%m/%d")
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=321, tm_isdst=-1)
3.格式化的字符串
strftime(format[,t])方法将一个struct_time时间对象格式的时间 转换为格式化的时间字符串。如果t未指定,将传入time.localtime()。
>>> time.strftime("%Y-%m-%d %H:%M:%S") #未指定t参数
'2017-11-17 11:30:13'
>>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) #指定 t参数为UTC时间
'2017-11-17 03:33:15'
如果struct_time元组中的任何一个元素越界,将会抛出ValueError的错误。
格式对照表:
其它方法:
time.sleep([secs]):线程推迟指定的时间运行。单位为秒
time.asctime([t]) 将一个表示时间的struct_time表示为"'Fri Nov 17 11:42:02 2017'"这种 形式。如果没有参数,会把time.localtime()作为参数传入
>>> time.asctime()
'Fri Nov 17 11:42:02 2017'
>>> time.asctime(time.localtime())
'Fri Nov 17 11:42:31 2017'
time.ctime([secs])把一个时间戳转换为time.asctime()的形式。如果没有参数,会把time.time()作为参数传入。它的作用相当于
time.asctime(time.localtime())
>>> time.ctime()
'Fri Nov 17 11:40:07 2017'
>>> time.ctime(time.time())
'Fri Nov 17 11:40:54 2017'
晕,为什么使用 time.ctime(time.time())方法会得到当前时区的时间。明明time.time()方法返回的时间戳表示 UTC时间的。
>>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(time.time()))
'2017-11-17 03:46:59'
>>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(time.time()+28800))
'2017-11-17 11:54:19'
28800表示8个小时(中国时间为 UTC时间+8小时)
暂且先把这个问题记在这里。
关于时间模块,这些只是最基础的应用。如何合理使用这些方法才是最应该学习的。
python 模块学习——time模块的更多相关文章
- python基础学习笔记——模块
自定义模块 我们今天来学习一下自定义模块(也就是私人订制),我们要自定义模块,首先就要知道什么是模块啊 一个函数封装一个功能,比如现在有一个软件,不可能将所有程序都写入一个文件,所以咱们应该分文件,组 ...
- python开发学习-day06(模块拾忆、面向对象)
s12-20160130-day06 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- Python语言学习:模块
一.模块 1. 模块(Module):以.py结尾的文件,包含python对象定义和python语句.使代码段更容易理解和使用. 模块分为两种:标准库(直接导入的库)和第三方库(需要下载安装的库). ...
- python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块
正则表达式 语法: mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...
- day5模块学习 -- os模块学习
python基础之模块之os模块 os模块 os模块的作用: os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/ ...
- day5模块学习--random模块
Python中的random模块用于生成随机数 下面具体介绍random模块的功能: 1.random.random() #用于生成一个0到1的浮点数 随机浮点数:0<= n < ...
- Python:模块学习——os模块
os模块提供了多个访问操作系统服务的功能 os模块中一些重要的函数和变量 os.name 显示当前使用平台 os.getcwd() 显示当前Python脚本工作路径 os.listdir('dirna ...
- Python:模块学习——sys模块
sys模块常见函数和变量 sys.argv:命令行参数,实现从程序外部向程序传递参数 [注]:(1) sys.argv[0] 表示代码本身的文件路径 (2)sys.argv是一个元组,可以用[ ]提取 ...
- day5模块学习--hashlib模块
hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...
随机推荐
- Redis: Useful commands
SELECT X - Select database (the X must be int) CONFIG GET databases - Get databases number INFO keys ...
- Cant't call setState(or forceUpdate) on an unmount component. 报错的可能性原因
react 小白编程 遇到了如下错误 调试了很久没找到到底为啥 后来发现,是因为多次将组件挂在到根节点的原因导致的 使用路由之后,只需要使用 ReactDOM.render()方式将最外层的路由挂在到 ...
- git-svn for mac
熟练使用 git ,新公司用的是 svn,这就尴尬了,为了这个习惯问题,我还是毅然坚持使用 git,但是又不与公司的 svn 冲突,所以就找到了 git 的 git-svn 插件. 在 mac 上使用 ...
- 软件project—思考项目开发那些事(一)
阅读文件夹: 1.背景 2.项目管理,质量.度量.进度 3.软件开发是一种设计活动而不是建筑活动 4.高速开发(简单的系统结构与复杂的业务模型) 5.技术人员的业务理解与产品经理的业务理解的终于业务模 ...
- WPF学习笔记:获取ListBox的选中项
有代码有J8: UI <UserControl x:Class="UnitViews.UserListUV" xmlns="http://schemas.micro ...
- oc69--NSMutableString
// main.m // NSMutableString基本概念,NSString是不可变字符串,NSMutableString是可变字符串.NSMutableString继承NSString,所以N ...
- 【转】Android使用XML Shape绘制带阴影效果的圆形按钮
众所周知,在Android开发里,为了优化在各种分辨率设备上的显示效果,同一份图片素材往往要提供mdpi.hdpi.xhdpi三种(以前还有ldpi), 尤其是按钮类的素材,考虑到normal.pre ...
- unique(V.begin(),V.end())
unique(V.begin(),V.end()) 重排容器算法:sort,unique unique 返回指向不重复区域之后一个位置的迭代器 ///删除vstr中重复的元素 void delete ...
- bzoj 5090 组题
题目大意: 一个数列,求一段长度不少于k的数 使平均值最大 思路: 把所有数列里的数,转换为(i,sum i)的点 然后求一个下凸包,在这个过程中对于长度特殊处理一下,使栈内至少有一段长度大于等于k ...
- 【POJ 2965】 The Pilots Brothers' refrigerator
[题目链接] http://poj.org/problem?id=2965 [算法] 位运算 [代码] #include <algorithm> #include <bitset&g ...