Python time模块核心用法与函数详解
本文详细介绍Python中time模块的核心功能,涵盖时间戳、格式化字符串与struct_time元组三种时间表示方式。详解time()、sleep()、strftime()、strptime()等常用函数的用法与参数,包括UTC时间处理、时区转换及格式符含义,帮助开发者高效进行时间数据处理。
Python time模块概述
前言
在日常开发中,时间处理是常见需求。Python提供了time、datetime和calendar等模块来处理时间,本文重点讲解time模块的具体应用。
在深入之前,需明确Python中表示时间的几种主要形式:
- 1. 时间戳(timestamp):供机器读取,通常以秒为单位的浮点数。2. 格式化的时间字符串:供人类阅读,如“2023-10-01”。3. struct_time元组:结构化时间数据,便于程序进行计算和处理。
- UTC(Coordinated Universal Time,世界协调时),即格林威治标准时间,是中国使用的UTC+8时区的基础。DST(Daylight Saving Time)指夏令时,部分国家在夏季会启用。
- 时间戳表示自1970年1月1日00:00:00起经过的秒数。执行type(time.time())会返回float类型。获取时间戳的常用函数包括time()和clock()等。
- struct_time元组包含9个元素,用于结构化表示时间。生成struct_time的函数主要有gmtime()、localtime()和strptime()。
时间表示形式与基础概念
时间格式(时间戳)
time.time()函数用于获取Unix时间戳。
该函数返回一个float类型的数值,精确到小数点后多位。
import time
t1 = time.time()
print(t1, type(t1))
睡眠 time.sleep
time.sleep(2) # 睡眠2秒
格式化时间
import time
print(time.strftime('%Y-%m-%d %H:%M:%S'))
2019-11-27 20:49:36
%y
print(time.strftime('%y-%m-%d %H:%M:%S'))
19-11-27 20:50:27
%c
print(time.strftime('%c'))
Wed Nov 27 20:51:20 2019
| 格式 | 含义 | 备注 |
|---|---|---|
| %a | 本地(locale)简化星期名称 | |
| %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 - 61) | 二 |
| %U | 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 | 三 |
| %w | 一个星期中的第几天(0 - 6,0是星期天) | 三 |
| %W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 | |
| %x | 本地相应日期 | |
| %X | 本地相应时间 | |
| %y | 去掉世纪的年份(00 - 99) | |
| %Y | 完整的年份 | |
| %Z | 时区的名字(如果不存在为空字符) | |
| %% | ‘%'字符 |
- 注意:“%p”指令仅在配合“%I”(12小时制)使用时才有效,用于显示上午或下午。
- 文档指出秒数范围实际为0-61,而非59,这是为了处理闰秒的情况。
- 使用strptime()函数时,仅当年份中的周数(%U或%W)和天数被明确指定时,周数计算才会生效。
时间转换与格式化函数
结构化时间(struct_time)
#结构化时间
#localtime
struct_time = time.localtime()
print(struct_time)
#time.struct_time(tm_year=2020, tm_mon=10, tm_mday=8, tm_hour=15, tm_min=7, tm_sec=53, tm_wday=0, tm_yday=281, tm_isdst=0)
print(struct_time.tm_year) #2018
#gmtime
struct_time1 = time.gmtime()
print(struct_time1)
#time.struct_time(tm_year=2020, tm_mon=10, tm_mday=8, tm_hour=15, tm_min=7, tm_sec=53, tm_wday=0, tm_yday=281, tm_isdst=0)
print(struct_time1.tm_year) #2020
| 索引(Index) | 属性(Attribute) | 值(Values) |
|---|---|---|
| 0 | tm_year(年) | 比如2011 |
| 1 | tm_mon(月) | 1 - 12 |
| 2 | tm_mday(日) | 1 - 31 |
| 3 | tm_hour(时) | 0 - 23 |
| 4 | tm_min(分) | 0 - 59 |
| 5 | tm_sec(秒) | 0 - 61 |
| 6 | tm_wday(weekday) | 0 - 6(0表示周日) |
| 7 | tm_yday(一年中的第几天) | 1 - 366 |
| 8 | tm_isdst(是否是夏令时) | 默认为-1 |
转换
它们之间的转化如图所示:

如需了解更多细节,请参考time模块的官方文档 http://docs.python.org/library/time.html。
结构化时间转时间戳mktime
t = time.time()
print(t) #1538982828.2859974
print(time.localtime(t))
#time.struct_time(tm_year=2018, tm_mon=10, tm_mday=8, tm_hour=15, tm_min=13, tm_sec=3, tm_wday=0, tm_yday=281, tm_isdst=0)
print(time.gmtime(t))
#time.struct_time(tm_year=2018, tm_mon=10, tm_mday=8, tm_hour=7, tm_min=13, tm_sec=3, tm_wday=0, tm_yday=281, tm_isdst=0)
print(time.mktime(time.localtime())) #1538982958.0
结构化时间转字符串strftime
print(time.strftime('%m/%d/%y %H:%M:%S',time.localtime(3000000000)))
#01/24/65 13:20:00
字符串转结构化时间strptime
t = time.time()
t = time.strptime('2000-12.31','%Y-%m.%d')
print(t)
#time.struct_time(tm_year=2000, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=366, tm_isdst=-1)
print(time.strftime('%m/%d/%y %H:%M:%S',time.localtime(3000000000))) #01/24/65 13:20:00
time模块常用函数详解
总结
asctime([tuple])
将时间元组(默认为本地时间)格式转换为字符串形式。该函数接受一个时间元组参数,若未提供,则默认使用localtime()的返回值。
clock()
返回当前程序的CPU执行时间。在Unix系统中,它始终返回总的运行时间;而在Windows系统中,从第二次调用开始,基准点是第一次调用此函数的时间戳,而非程序启动时间。该函数不接受参数。
ctime(seconds)
将时间戳转换为字符串。接受一个时间戳参数,默认为当前时间戳。其功能等价于asctime(localtime(seconds))。
print(time.asctime()) # Mon Oct 8 15:21:02 2018
print(time.asctime(time.localtime())) # Mon Oct 8 15:21:02 2018
print(time.asctime(time.localtime(2000000000))) # Wed May 18 11:33:20 2033
print(time.ctime()) # Mon Oct 8 15:21:02 2018
print(time.ctime(2000000000)) # Wed May 18 11:33:20 2033
gmtime([seconds])
将时间戳转换为UTC时间元组格式。接受一个浮点型时间戳参数,默认为当前时间戳。
localtime([seconds])
将时间戳转换为本地时间元组格式。接受一个浮点型时间戳参数,默认为当前时间戳。
mktime(tuple)
将本地时间元组转换为时间戳。接受一个时间元组作为必选参数。
sleep(seconds)
使程序暂停执行指定时间段。接受的参数可以是整型或浮点型。
time()
返回当前时间戳,以浮点数形式表示。该函数不接受参数。
tzset()
用于改变本地时区设置。
strptime(string, format)
将指定格式的时间字符串解析为时间元组,这是strftime()的逆向过程。接受字符串和时间格式两个必选参数。示例:
time.strptime('2015-08-05 22:08:06', '%Y-%m-%d %X')
time.struct_time(tm_year=2015, tm_mon=8, tm_mday=5, tm_hour=22, tm_min=8, tm_sec=6
strftime(format[, tuple])
将时间元组以指定的格式转换为字符串形式。接受字符串格式化串和时间元组两个参数,其中时间元组为可选,默认为localtime()。示例:
time.strftime("%Y-%m-%d %X", time.localtime())
'2011-05-05 16:37:06'
好了,到此这篇关于python时间time模块处理大全的文章就介绍到这了,更多相关python时间time模块处理内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









