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等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...
随机推荐
- Node.js 博客实例(三)添加文件上传功能
原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第三章 上传文件眼下有三种方法: 使用 Express 自带的文件上传功能,不涉及数据库 使用 For ...
- The 2014 ACM-ICPC Asia Mudanjiang Regional Contest(2014牡丹江区域赛)
The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 题目链接 没去现场.做的网络同步赛.感觉还能够,搞了6题 A:这是签到题,对于A堆除掉.假设没剩余 ...
- 数据结构之---C语言实现图的邻接表存储表示
// 图的数组(邻接矩阵)存储表示 #include <stdio.h> #include <stdlib.h> #include <string.h> #defi ...
- npm/bower/brew
npm: npm(node package manager)node包管理器,用来下载发布第三方工具包,例如:代码的压缩.合并.编译的插件包.主要功能:安装.卸载.更新.查看.搜索.发布等 npm的具 ...
- luogu3959 宝藏 搜索+剪枝
题目大意 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏.但是 ...
- java 内存模型 ——学习笔记
一.Java 内存模型 java内存模型把 Java 虚拟机内部划分为线程栈和堆 下面这张图演示了调用栈和本地变量存放在线程栈上,对象存放在堆上. ==>> 一个局部变量可能是 ...
- Tiny4412 开发板 编译环境搭建【转】
本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369 版权声明:本文为博主原创文章,未经博主允许不得转载. /*********** ...
- JSP-Runoob:JSP 国际化
ylbtech-JSP-Runoob:JSP 国际化 1.返回顶部 1. JSP 国际化 在开始前,需要解释几个重要的概念: 国际化(i18n):表明一个页面根据访问者的语言或国家来呈现不同的翻译版本 ...
- 当Table中td内容为空时,让它显示边框的办法
1 在 table的css里面加 border-collapse:collapse; 在 td 的css里面加 empty-cells:show; border-collapse设置或检索表 ...
- B. Mashmokh and ACM(dp)
http://codeforces.com/problemset/problem/414/B B. Mashmokh and ACM time limit per test 1 second memo ...