python处理时间字符串

时间格式 ISO 8601 标准

"2024-09-11T00:00:03Z"
Z 的时间字符串表示UTC 时间(协调世界时)。Z(Zero offset / UTC)
如果没有 Z,通常还可以使用时区偏移来表示时间。例如:

2024-09-11T00:00:03+08:00 表示东八区的时间(比 UTC 提前8小时)。
2024-09-11T00:00:03-05:00 表示比 UTC 晚5小时的时间。

字符串获取UTC时间戳

calendar 模块中的 timegm 函数处理 UTC 时间

from datetime import datetime
import calendar

# 定义时间字符串
time_str = "2024-09-11T00:00:03Z"

# 解析时间字符串为UTC时间
dt = datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%SZ")

# 使用 calendar.timegm 来转换为 Unix 时间戳
unix_time = calendar.timegm(dt.timetuple())

print(unix_time)

注意区分 mktime 默认处理的是本地时间,不是 UTC 时间。也就是说,它会将给定的时间假设为当前时区的本地时间,然后将其转换为 Unix 时间戳。这个特性导致在处理 UTC 时间(如带有 Z 的时间字符串)时,计算结果可能不正确,因为时区不同:
以下得到的是错误的

import time
from datetime import datetime

# 定义时间字符串
time_str = "2024-09-11T00:00:03"

# 解析时间字符串为 datetime 对象
dt = datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%S")

# 使用 mktime 转换为 Unix 时间戳(假设为本地时间)
unix_time = time.mktime(dt.timetuple())

print(unix_time)

posted @ 2024-09-13 17:15  Josen_Earth  阅读(72)  评论(0编辑  收藏  举报