如何学习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的常见命令注入威胁
Feb 18 Python
python中self原理实例分析
Apr 30 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
python opencv摄像头的简单应用
Jun 06 Python
python 字符串追加实例
Jul 20 Python
Django models filter筛选条件详解
Mar 16 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
python numpy实现rolling滚动案例
Jun 08 Python
python3.7添加dlib模块的方法
Jul 01 Python
python3代码输出嵌套式对象实例详解
Dec 03 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读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
PHP 图片处理
2020/09/16 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
Javascript 自定义类型方法小结
2010/03/02 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
智能电子应届生求职信
2013/11/10 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
精神文明建设标语
2014/06/16 职场文书
实验室的标语
2014/06/20 职场文书
nginx优化的六点方法
2021/03/31 Servers
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
Python读写yaml文件
2022/03/20 Python