Python time模块核心用法与时间转换详解

顾言
顾言
发布时间:2026-10-13| 3人浏览过
原创

本文详解Python中time模块的三种时间表示方式:时间戳、struct_time对象及格式化字符串。重点解析gmtime与localtime的区别、strftime与strptime的用法,以及asctime和ctime函数的具体应用,帮助开发者准确处理时间转换与时区问题。

time模块的时间表示方法

在Python的time模块中,主要存在两种时间表示方法:

第一种是基于时间戳(timestamp)的方式。它表示自1970年1月1日0时0分0秒以来的偏移量,通常以浮点数形式呈现。

第二种是struct_time类型的表示方法。通过gmtime()和localtime()函数,可以将时间戳转换为struct_time类型,以便更直观地查看时间信息。

第三种是格式化时间字符串。利用strftime()函数,可以将struct_time类型的时间对象格式化为指定的字符串形式进行显示。

此外,strptime()函数可将时间字符串解析为struct_time类型;而mktime()函数则执行相反操作,将struct_time类型转换回以秒为单位的时间戳。

常用时间转换函数

Python的time.asctime()函数接收一个时间元组(time tuple),并返回一个可读性强的字符串,格式类似于"Tue Dec 11 18:07:14 2008"。

time.ctime()函数用于将时间戳(以秒为单位的浮点数)转换为time.asctime()所支持的字符串格式。若未提供参数,默认使用time.time()作为输入,其效果等同于asctime(localtime(secs))。


>>>import time 
>>> time.time() 
1446643591.427887 
>>> time.sleep(2.5) 
>>> time.clock() #用于返回第一次调用该方法到现在的秒数 
4.5289567910348396e-07 
>>> time.gmtime()         #可选参数[sec]表示自1970年1月1日以来的秒数,默认time.time此函数返回一个time.struct_time类型对象,这个对象包括年份,日月,星期,天数,时分秒等描述时间的信息。, 
time.struct_time(tm_year=2015, tm_mon=11, tm_mday=4, tm_hour=13, tm_min=31, tm_sec=4, tm_wday=2, tm_yday=308, tm_isdst=0) 
>>> time.gmtime(time.time()-24*60*60)     #返回昨天此时对应的time_struct对象 
time.struct_time(tm_year=2015, tm_mon=11, tm_mday=3, tm_hour=13, tm_min=31, tm_sec=46, tm_wday=1, tm_yday=307, tm_isdst=0) 
>>> time.localtime()          #返回本地时间对应的一个time_struct对象 
time.struct_time(tm_year=2015, tm_mon=11, tm_mday=4, tm_hour=21, tm_min=32, tm_sec=28, tm_wday=2, tm_yday=308, tm_isdst=0) 

>>> time.gmtime(11.0) 
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=11, tm_wday=3, tm_yday=1, tm_isdst=0) 
>>> time.localtime(11.0) 
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=11, tm_wday=3, tm_yday=1, tm_isdst=0) 
>>> time.mktime(time.localtime())   #和上述两个函数的操作相反,用于将structt_time对象转换为累加秒数 
1446644032.0 
>>> time.strftime('%Y-%m-%d %H:%M:%S')   #将时间按照给定格式解释为时间字符串 
'2015-11-04 21:34:51' 
>>> time.strftime('%w,%j',time.gmtime())   
# %Y 对应年份四位数表示 
# %y 对应年份两位数表示 %m 对应月份 %d 对应日期 </span> 
# %H 对应时间 24小时制 %I 对应时间12小时制 
# %M 对应分钟 %S 对应秒钟 
# %j 对应一年中的第几天 %w 对应星期 %W一年中的星期数'3,308' 
>>> time.strptime('2009-06-23 15:30:53', '%Y-%m-%d %H:%M:%S') #将时间字符串解释为一个struct_time对象,它接收两个字符串参数 
time.struct_time(tm_year=2009, tm_mon=6, tm_mday=23, tm_hour=15, tm_min=30, tm_sec=53, tm_wday=1, tm_yday=174, tm_isdst=-1) 
>>> time.ctime() #将一个时间戳转换成一个字符串,默认为当前时间戳 
'Wed Nov 04 21:38:31 2015' 

时区差异注意事项

需要特别注意:当将格式化时间转换为时间戳,再重新转换回格式化时间时,gmtime和localtime()的结果可能会相差一天。

造成这一差异的原因是:gmtime()返回的是0时区(UTC)的标准时间,而localtime()则考虑了本地时区的偏移量。

以上介绍了Python time模块的主要用法,希望能对读者有所帮助。如有疑问欢迎留言,小编会及时回复。感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。