Python time模块详解:时间戳、格式化与常用函数
本文详细介绍Python中time模块的核心功能,涵盖时间戳、元组格式及字符串格式化的定义与转换方法。通过time.time()、time.localtime()、time.strftime()等常用函数实例,演示如何获取当前时间、转换时区及计算程序运行耗时,帮助开发者掌握Python时间处理技巧。
Python time模块概述
本文通过具体实例深入解析Python中的time模块,旨在为读者提供实用的参考与学习素材。
时间与日期模块概述
Python提供了多种处理日期和时间的方式,其中转换日期格式是常见需求。time和calendar模块可用于日期的格式化操作。在Python中,时间间隔以秒为单位的浮点数表示,每个时间戳均基于自1970年1月1日午夜(即Unix纪元)以来经过的秒数进行计算。time模块提供了丰富的函数,用于处理各种常见的日期格式转换。
Time模块基础概念
Time模块详解
1.1 核心名词解释
UTC(协调世界时):即格林威治天文时间,也是世界标准时间。在中国,时区为UTC-8。
DST(夏令时):这是一种人为规定的时间制度,旨在夏季节约能源,通常将时钟拨快一小时。
1.2 时间的三种表示形式
1. 时间戳
以整数或浮点数表示的时间间隔,单位为秒。其计算起点为1970.1.1的零点,即Unix纪元。
2. 元组格式
使用Python的数据结构(元组)来表示,该元组包含9个整型元素,分别代表不同的时间含义。
这9个元素分别为:year(年)、month(月)、day(日)、hours(时)、minutes(分)、seconds(秒)、weekday(星期几)、Julia day(儒略日)以及flag(标志位,其中1表示夏令时,-1表示根据当前时间判断,0表示正常状态)。
3. 格式化字符串
%Y 代表完整的年份。
时间格式与代码详解
时间格式代码说明
'''
%a 本地(local) 简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01-31)
%H 一天中的第几个小时(24小时制00-23)
%I 第几个小时(12小时制01-12)
%j 一年中的第几天(001-366)
%m 月份(01-12)
%M 分钟数(00-59)
%p 本地am或pm的相应符
%S 秒(01-60)
%U 一年中的星期数。(00-53 星期天是一个星期的开始)第一个星期天之前的所有天数都放在第0周
%w 一个星期中的第几天(0-6 0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00-99)
%Y 完整的年份
%z 时区的名字
%% '%'字符
'''
import time
time1 = time.time()
lt = time.localtime(time1)
st = time.strftime('''a: %a |A: %A |b: %b |B: %B |c: %c |d: %d
H: %H |I: %I |j: %j |m: %m |M: %M |p: %p
S: %S |U: %U |w: %w |W: %W |x: %x |X: %X
y: %y |Y: %Y |z: %z |%% ''',lt)
print(st)
以下是格式化输出的示例:
a: Thu | A: Thursday | b: Apr | B: April | c: Thu Apr 12 17:15:19 2018 | d: 12 H: 17 | I: 05 | j: 102 | m: 04 | M: 15 | p: PM S: 19 | U: 14 | w: 4 | W: 15 | x: 04/12/18 | X: 17:15:19 y: 18 | Y: 2018 | Z: +0800 | %
获取当前时间与性能计算
获取当前时间的常用方法
1. time.clock()
该方法以浮点数计算秒数,返回程序运行的时间。
print(time.clock())
time.sleep(2)
print(time.clock())
示例输出:
0.0 2.0007889054974255
print(time.clock())
另一种输出示例:
4.665319322446344e-07
用途:可用于计算某段程序代码运行所消耗的时间。
import time
start = time.clock()
for cock in range(5,101,5): # 公鸡
for hen in range(3,101 - cock,3): #母鸡
for chick in range(1,101 - cock - hen): #小鸡
if cock // 5 + hen // 3 + chick * 3 == 100 and cock + hen + chick == 100:
pass
end = time.clock()
time2 = end - start
print("方案二所花时间",time2)
示例输出:
方案二所花时间 0.0041665966868768296
2. time.sleep(seconds)
该函数使程序休眠指定的seconds秒数后,再执行后续语句,单位是秒(s)。
时间戳与元组转换函数
3. time.time() 获取时间戳
该方法返回一个浮点型数据。
它表示从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗来说,时间戳是一份能够证明数据在特定时间点已存在的完整可验证的电子证据,主要用于标识数据的产生时间。
time1 = time.time()
print(time1)
示例输出:
1523427779.9672592
4. time.gmtime(时间戳)
该函数将时间戳转换为格林尼治标准时间,并返回一个时间元组。
time1 = time.time()
gm = time.gmtime(time1)
print(gm)
示例输出:
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=11, tm_hour=6, tm_min=22, tm_sec=59, tm_wday=2, tm_yday=101, tm_isdst=0)
5. time.localtime(时间戳)
该函数将时间戳转换为本地时间,并返回一个时间元组(例如在中国时区,会自动加上8个小时)。
time1 = time.time()
lm = time.localtime(time1)
print(lm)
示例输出:
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=11, tm_hour=14, tm_min=22, tm_sec=59, tm_wday=2, tm_yday=101, tm_isdst=0)
6. time.mktime(时间元组)
该函数将时间元组转换为时间戳,返回一个浮点数。
lm2 = time.localtime(1523328000)
time2 = time.mktime(lm2)
print(time2)
示例输出:
1523328000.0
7. time.asctime(时间元组)
该函数将时间元组转换为字符串形式。
lm2 = time.localtime(1523328000)
st = time.asctime(lm2)
print(st)
示例输出:
Tue Apr 10 10:40:00 2018
8. time.ctime(时间戳)
该函数将时间戳转换为字符串形式。
time1 = time.time()
ct = time.ctime(time1)
print(ct)
示例输出:
Wed Apr 11 15:18:35 2018
9. time.strftime(format, 时间元组)
该函数将时间元组转换为指定格式的字符串。
time1 = time.time()
lm = time.localtime(time1)
sct = time.strftime("%Y-%m-%d %X",lm)
print(sct)
示例输出:
2018-04-11 15:18:35
字符串与时间元组互转
10. time.strptime(字符串, format)
该函数将指定格式的字符串转换为时间元组。
strp = time.strptime('2018-04-10 11:12:57',"%Y-%m-%d %X") print(strp)
示例输出:
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=10, tm_hour=11, tm_min=12, tm_sec=57, tm_wday=1, tm_yday=100, tm_isdst=-1)
11. 获取凌晨零点到23:59的时间范围
now = time.time()
midnight = now - (now % 86400) + time.timezone
pre_midnight = midnight - 86400
now_midnight = midnight - 1
start_time = datetime.datetime.strptime(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(pre_midnight)),
"%Y-%m-%d %H:%M:%S")
end_time = datetime.datetime.strptime(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(now_midnight)),
"%Y-%m-%d %H:%M:%S")
推荐在线计算工具
此外,推荐以下几款日期与天数计算的在线工具供读者使用:
在线日期/天数计算器: http://tools.jb51.net/jisuanqi/date_jisuanqi
在线万年历日历: http://tools.jb51.net/bianmin/wannianli
在线阴历/阳历转换工具: http://tools.jb51.net/bianmin/yinli2yangli
Unix时间戳(timestamp)转换工具: http://tools.jb51.net/code/unixtime
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python日期与时间操作技巧总结》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述的time模块实例解析能对大家的Python程序设计有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









