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)