Python time模块时间处理详解:字符串、时间戳与格式转换

顾星河
顾星河
发布时间:2026-10-10 | 2人浏览过
原创

在Python开发中,处理日期和时间是常见需求。time模块提供了多种函数来实现字符串与时间对象之间的转换、时间戳的获取以及时间格式化的操作。本文将通过具体代码示例,详细解析这些核心功能的用法。

字符串与时间元组的相互转换

处理时间数据时,通常需要将用户输入的字符串解析为Python可识别的时间元组,或者将时间元组格式化为可读的字符串。这主要依赖于 time.strptime() 和 time.strftime() 两个函数。

字符串解析为时间元组

time.strptime() 函数用于将字符串按照指定的格式解析为时间元组(struct_time)。其第一个参数是待解析的字符串,第二个参数是定义格式的指令。

import time

start = "2017-01-01"
end = "2017-8-12"

# 将字符串解析为时间元组,指定格式为年-月-日
startTime = time.strptime(start, "%Y-%m-%d")
endTime = time.strptime(end, "%Y-%m-%d")

print(startTime)
print(endTime)

时间元组格式化为字符串

相反地,time.strftime() 用于将时间元组转换为指定格式的字符串。注意该函数的参数顺序与 strptime 不同,第一个参数是格式字符串,第二个参数是时间元组。

# 将时间元组格式化为字符串,指定输出格式
_start = time.strftime('%Y%m%d-%H:%M:%S', startTime)
_end = time.strftime('%Y%m%d-%H:%M:%S', endTime)

print(_start)
print(_end)

时间戳与时间对象的转换

时间戳(Timestamp)通常指从1970年1月1日00:00:00开始到现在的秒数。在Python中,可以通过 time.mktime() 和 time.localtime() 在时间元组与时间戳之间进行转换。

时间元组转时间戳

time.mktime(t) 接收一个时间元组,返回对应的时间戳(浮点数)。这对于计算时间差非常有用。

# 将时间元组转换为时间戳
startStamp = time.mktime(startTime)
endStamp = time.mktime(endTime)

print(startStamp)
print(endStamp)

时间戳转时间元组

time.localtime(s) 接收一个时间戳,返回本地时间对应的时间元组。

# 将时间戳转换回时间元组
_startTime = time.localtime(startStamp)
print(_startTime)

计算时间差值

获取两个日期的时间戳后,可以通过简单的算术运算计算它们之间的天数差。由于时间戳以秒为单位,计算天数需除以一天的总秒数(24 * 60 * 60)。

# 计算两个日期之间的天数差
print(int((endStamp - startStamp) / (24 * 60 * 60)))

常用时间格式化符号

在使用 strftime 和 strptime 时,需要掌握以下常见的格式控制符:

  • %a:英文星期简写(如 Mon)
  • %A:英文星期全称(如 Monday)
  • %b:英文月份简写(如 Jan)
  • %B:英文月份全称(如 January)
  • %c:本地相应的日期和时间表示
  • %d:月份中的天数,范围 01-31
  • %H:小时(24小时制),范围 00-23
  • %I:小时(12小时制),范围 01-12
  • %m:月份,范围 01-12
  • %M:分钟,范围 00-59
  • %j:一年中的第几天,范围 001-366
  • %w:星期几,范围 0(周日)- 6(周六)
  • %W:一年中的第几周,范围 00-53
  • %x:本地日期表示
  • %X:本地时间表示
  • %y:年份,范围 00-99
  • %Y:年份,完整拼写(如 2017)

以上就是基于Python time模块进行时间处理的详细内容,更多关于Python时间处理技巧的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表