聊聊Python的time模块
time模块
time模块是很多人最早接触到的模块,像time.sleep(x)好像随处可见,但是time模块里面的其他方法呢?下面一起看一下time模块。
在Python中一般用这3种方式表示时间:
1.时间戳,包括time()等函数
2.格式化的时间字符 包括asctime()等函数
3.时间元组 包括localtime()等函数
分别举例如下:
print(time.time()) >>> 1553149608.6831224
time得到的时间单位是秒,那么这个秒是怎么来的呢?这是从1970年1月1日0点0分0秒开始计时,一直到现在经历的秒数(不信可以自己算一下)。为什么是1970?这一年发生了很多大事,比如Unix诞生了。
print(time.localtime()) >>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=14, tm_min=27, tm_sec=24, tm_wday=3, tm_yday=80, tm_isdst=0) #从左到右依次是当前时间的年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时 print(time.localtime(time.time())) >>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=14, tm_min=27, tm_sec=24, tm_wday=3, tm_yday=80, tm_isdst=0)
这里得到的是一个元组,两个print得到的结果是一样的,说明localtime中有一个默认参数,就是time.time(),你也可以吧time.time()拿到的时间(1553149608.6831224)当做参数,得到的结果也是一样的。
print(time.gmtime()) >>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=6, tm_min=27, tm_sec=24, tm_wday=3, tm_yday=80, tm_isdst=0)
gmtime和localtime的用法是一样的,结果似乎也一样,但仔细一看发现tm_hour好像少8,这是为什么呢?因为我所在的中国位于东8区,gmtime获取的时间是零度经线的时间,没记错的话,应该是英国的格林尼治天文台所在的经度,也叫本初子午线嘛。
print(time.mktime(time.localtime())) >>>1553150685.0
mktime可以把得到的元组转化成时间戳。
print(time.asctime()) >>>Thu Mar 21 14:48:48 2019 print(type(time.asctime())) >>><class 'str'> print(time.asctime(time.localtime())) >>>Thu Mar 21 14:48:48 2019
asctime可以把时间元组转化成一个固定格式的字符串,默认参数就是time.localtime拿到的元组。
print(time.ctime()) >>>Thu Mar 21 14:53:36 2019 print(time.ctime(time.time())) >>>Thu Mar 21 14:53:36 2019
ctime和asctime拿到的结果一样,但是参数是时间戳,默认就是time.time()
print(time.strftime('%Y-%m-%d %H:%M:%S')) >>>2019-03-21 15:00:50 print(time.strftime('%Y-%m-%d %X')) >>>2019-03-21 15:00:50 print(time.strptime('2019-03-21 14:57:45','%Y-%m-%d %X')) >>>time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=14, tm_min=57, tm_sec=45, tm_wday=3, tm_yday=80, tm_isdst=-1)
strftime可以按一定的规则,将时间元组转化成格式化字符串形式,如果没有时间元组参数,就默认为localtime。前面两个print结果是一样的,就是说%X可以代替%H:%M:%S,这是一种简写。strptime和strftime作用是相反的,注意格式要和输入的格式化字符串一致,不然就会报错了,format默认为:"%a %b %d %H:%M:%S %Y"。
到这里,上面三种时间的转化关系已经出来了:
sleep就不用讲了,就是线程推迟指定时长后运行,单位是秒,正常理解为等待就行,time模块基本就这些内容了。
- 编程思想 之「语言导论」
- 编程思想 之「对象漫谈」
- Github 项目推荐 | TensorFlow 概率推理工具集 —— probability
- Github 项目推荐 | 用于 C/C++、Java、Matlab/Octave 的特征选择工具箱
- Mercari Price 比赛分享 —— 语言不仅是算法和公式而已
- Github 项目推荐 | GAN 的 Keras 实现案例集合 —— Keras-GAN
- Github 项目推荐 | 微软开源 MMdnn,模型可在多框架间转换
- 半自动化运维之动态添加数据文件(一) (r5笔记第55天)
- 半自动化运维之动态添加数据文件(二) (r5笔记第56天)
- 11g Active DataGuard初探(r5笔记第54天)
- Github 项目推荐 | 用于构建端对端对话系统和训练聊天机器人的开源库 —— DeepPavlov
- 我身边的一些数据库事故 (r5笔记第52天)
- 一个清理脚本的改进思路(r5笔记第51天)
- 【专业技术】Python爬虫:抓取手机APP的传输数据
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AkShare-股票数据-板块行情
- AkShare-股票数据-流通股东
- SpringBoot系列之使用Spring Task实现定时任务
- AkShare-股票数据-分时数据
- AkShare-基金数据-基金行情数据
- AkShare-期权数据-商品期权
- AkShare-股票数据-破净股统计
- AkShare-股票数据-创新高和新低的股票数量
- AkShare-股票数据-A股个股市盈率、市净率和股息率
- AkShare-股票数据-A股市净率
- AkShare-股票数据-A股市盈率
- AkShare-期货数据-期货交易日历
- AkShare-另类数据-彭博亿万富豪指数
- AkShare-股票数据-券商业绩月报
- AkShare-期货数据-仓单日报-上海期货交易所