如何学习Python time模块


Posted in Python onJune 03, 2020

time 模块主要包含各种提供日期、时间功能的类和函数。该模块既提供了把日期、时间格式化为字符串的功能,也提供了从字符串恢复日期、时间的功能。

在 Python 的交互式解释器中先导入 time 模块,然后输入 [e for e in dir(time) if not e.startswith('_')] 命令,即可看到该模块所包含的全部属性和函数:

>>> [e for e in dir(time) if not e.startswith('_')]
['altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 
'monotonic',
 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']

在 time 模块内提供了一个 time.struct_time 类,该类代表一个时间对象,它主要包含 9 个属性,每个属性的信息如下表所示:

表 1 time.struct_time 类中各属性的含义

表 1 time.struct_time 类中各属性的含义
字段名 字段含义
tm_year 如 2017、2018 等
tm_mon 如 2、3 等,范围为 1~12
tm_mday 如 2、3 等,范围为 1~31
tm_hour 如 2、3 等,范围为 0~23
tm_min 如 2、3 等,范围为 0~59
tm_sec  如 2、3 等,范围为 0~59
tm_wday 周一为 0,范围为 0~6
tm_yday  一年内第几天 如 65,范围 1~366
tm_isdst 夏时令 0、1 或 -1

比如,Python 可以用 time.struct_time(tm_year=2018, tm_mon=5, tm_mday=2, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0) 很清晰地代表时间。

此外,Python 还可以用一个包含 9 个元素的元组来代表时间,该元组的 9 个元素和 struct_time 对象中 9 个属性的含义是一一对应的。比如程序可以使用(2018, 5, 2, 8, 0, 30, 3, 1, 0)来代表时间。

在日期、时间模块内常用的功能函数如下:

time.asctime([t]):将时间元组或 struct_time 转换为时间字符串。如果不指定参数 t,则默认转换当前时间。

time.ctime([secs]):将以秒数代表的时间转换为时间宇符串。

time.gmtime([secs]):将以秒数代表的时间转换为 struct_time 对象。如果不传入参数,则使用当前时间。

time.localtime([secs]):将以秒数代表的时间转换为代表当前时间的 struct_time 对象。如果不传入参数,则使用当前时间。

time.mktime(t):它是 localtime 的反转函数,用于将 struct_time 对象或元组代表的时间转换为从 1970 年 1 月 1 日 0 点整到现在过了多少秒。

time.perf_counter():返回性能计数器的值。以秒为单位。

time.process_time():返回当前进程使用 CPU 的时间。以秒为单位。

time.sleep(secs):暂停 secs 秒,什么都不干。

time.strftime(format[, t]):将时间元组或 struct_time 对象格式化为指定格式的时间字符串。如果不指定参数 t,则默认转换当前时间。

time.strptime(string[, format]):将字符串格式的时间解析成 struct_time 对象。

time.time():返回从 1970 年 1 月 1 日 0 点整到现在过了多少秒。

time.timezone:返回本地时区的时间偏移,以秒为单位。

time.tzname:返回本地时区的名字。

下面程序示范了 time 棋块的功能函数:

import time
# 将当前时间转换为时间字符串
print(time.asctime())
# 将指定时间转换时间字符串,时间元组的后面3个元素没有设置
print(time.asctime((2018, 2, 4, 11, 8, 23, 0, 0 ,0))) # Mon Feb 4 11:08:23 2018
# 将以秒数为代表的时间转换为时间字符串
print(time.ctime(30)) # Thu Jan 1 08:00:30 1970
# 将以秒数为代表的时间转换为struct_time对象。
print(time.gmtime(30))
# 将当前时间转换为struct_time对象。
print(time.gmtime())
# 将以秒数为代表的时间转换为代表当前时间的struct_time对象
print(time.localtime(30))
# 将元组格式的时间转换为秒数代表的时间
print(time.mktime((2018, 2, 4, 11, 8, 23, 0, 0 ,0))) # 1517713703.0
# 返回性能计数器的值
print(time.perf_counter())
# 返回当前进程使用CPU的时间
print(time.process_time())
#time.sleep(10)
# 将当前时间转换为指定格式的字符串
print(time.strftime('%Y-%m-%d %H:%M:%S'))
st = '2018年3月20日'
# 将指定时间字符串恢复成struct_time对象。
print(time.strptime(st, '%Y年%m月%d日'))
# 返回从1970年1970年1月1日0点整到现在过了多少秒。
print(time.time())
# 返回本地时区的时间偏移,以秒为单位
print(time.timezone) # 在国内东八区输出-28800

运行上面程序,可以看到如下输出结果:

Fri Feb 22 11:28:39 2019
Mon Feb 4 11:08:23 2018
Thu Jan 1 08:00:30 1970
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, 
tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=2, tm_mday=22, tm_hour=3, tm_min=28, tm_sec=39, tm_wday=4, tm_yday=53, 
tm_isdst=0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, 
tm_isdst=0)
1517713703.0
0.0
0.140625
2019-02-22 11:28:39
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=79, 
tm_isdst=-1)
1550806119.4960592
-28800

time 模块中的 strftime() 和 strptime() 两个函数互为逆函数,其中 strftime() 用于将 struct_time 对象或时间元组转换为时间字符串;而 strptime() 函数用于将时间字符串转换为 struct_time 对象。这两个函数都涉及编写格式模板,比如上面程序中使用 %Y 代表年、%m 代表月、%d 代表日、%H 代表时、%M 代表分、%S 代表秒。这两个函数所需要的时间格式字符串支持的指令如下表所示:

指 令 含义
%a 本地化的星期几的缩写名,比如 Sun 代表星期天
%A 本地化的星期几的完整名
%b 本地化的月份的缩写名,比如 Jan 代表一月
%B 本地化的月份的完整名
%c 本地化的日期和时间的表示形式
%d 代表一个月中第几天的数值,范固: 01~31
%H 代表 24 小时制的小时,范围:00~23
%I 代表 12 小时制的小时,范围:01~12
%j 一年中第几天,范围:001~366
%m 代表月份的数值,范围:01~12
%M 代表分钟的数值,范围:00~59
%p 上午或下午的本地化方式。当使用 strptime() 函数并使用 %I 指令解析小时时,%p 只影响小时字段
%S 代表分钟的数值,范围:00~61。该范围确实是 00~61,60 在表示闰秒的时间戳时有效,而 61 则是由于一些历史原因造成的
%U 代表一年中表示第几周,以星期天为每周的第一天,范围:00~53。在这种方式下,一年中第一个星期天被认为处于第一周 。当使用 strptime() 函数解析时间字符串时,只有同时指定了星期几和年份该指令才会有效
%w 代表星期几的数值,范围:0~6,其中 0 代表周日
%W 代表一年小第几周,以星期一为每周的第一天,范围:00~53。在这种方式下,一年中第一个星期一被认为处于第一周 。当使用 strptime() 函数解析时间字符串时,只有同时指定了星期几和年份该指令才会有效
%x 本地化的日期的表示形式
%X 本地化的时间的表示形式
%y 年份的缩写,范围:00~99,比如 2018 年就简写成 18
%Y 年份的完整形式。如 2018
%z 显示时区偏移
%Z 时区名(如果时区不行在,则显示为空)
%% 用于代表%符号

知识点扩展:

time模块

这个模块提供各种与时间相关的函数。相关功能,可以参见datetime和calendat模块。

此模块并非所有平台提供所有功能,因平台而异

以下是对一些术语和惯例的解释

  • 初始时间因平台而异。对于Unix平台,初始时间是1970,01,01,00:00:00(UTC)。查看每个操作平台的初始时间可以使用time.gmtime(0)函数。
  • 在所有POSIX平台上,从初始时间以来的秒数都不包括闰秒
  • 该模块中的函数可能不处理初始时间以前和遥远未来的日期和时间,未来的分界点对于32位操作系统是2038年。
  • UTC是协调世界时(以前称为格林尼治标准时间,GMT)。缩写UTC不是一个错误,而是英语和法语之间的妥协。
  • DST是夏令时,在一年中的某些时候,时区通常会调整一个小时。DST规则是神奇的(由当地法律决定),每年都在变化。
  • 各种实时函数的精度可能低于表示其值或参数的单位所建议的精度。

以上就是如何学习Python time模块的详细内容,更多关于Python time模块详解的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
Python中统计函数运行耗时的方法
May 05 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
python基础教程之分支、循环简单用法
Jun 16 Python
python正则实现计算器功能
Dec 14 Python
Python 类的特殊成员解析
Jun 20 Python
Python subprocess库的使用详解
Oct 26 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
python Django 创建应用过程图示详解
Jul 29 Python
python判断自身是否正在运行的方法
Aug 08 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
详细总结Python常见的安全问题
May 21 Python
使用openCV去除文字中乱入的线条实例
Jun 02 #Python
Python能做什么
Jun 02 #Python
什么是Python中的匿名函数
Jun 02 #Python
学习python需要有编程基础吗
Jun 02 #Python
python中if及if-else如何使用
Jun 02 #Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 #Python
python编写一个会算账的脚本的示例代码
Jun 02 #Python
You might like
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
PDO::rollBack讲解
2019/01/29 PHP
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
JS验证字符串功能
2017/02/22 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
Numpy之reshape()使用详解
2019/12/26 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
keras.layer.input()用法说明
2020/06/16 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
教学实习自我评价
2014/01/28 职场文书
仓管员岗位责任制
2014/02/19 职场文书
外联部演讲稿
2014/05/24 职场文书
机关作风建设工作总结
2014/10/23 职场文书
2014年政工师工作总结
2014/12/18 职场文书
商务英语求职信范文
2015/03/19 职场文书
员工工作表扬信
2015/05/05 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python