Python中UTC时间与时间戳的双向转换详解
本文详细讲解Python中UTC时间与时间戳的双向转换方法。通过time.gmtime将时间戳转为UTC显示时间,利用calendar.timegm将UTC时间元组转回时间戳。文章包含完整代码示例及输出分析,并对比了不同转换函数的行为差异,适用于需要处理协调世界时的开发场景。
UTC时间转换的核心目标是确保最终结果均基于协调世界时(UTC)。
具体而言,主要涉及两种转换方向:
第一种是将时间戳(timestamp)转换为UTC显示时间(datetime),实现这一功能需调用time.gmtime(timestamp)。
第二种是将UTC显示时间(datetime)转换回UTC时间戳(timestamp),此时应使用calendar.timegm(datetime.timetuple())。
需要特别注意以下细节:
在Visual C++环境下,对应的接口函数分别为gmtime和_mkgmtime。
以下是具体的实现代码:
# -*- coding: gb2312 -*-
# UTC时间转换,最终得到的都是UTC时间:
# 时间戳(timestamp) 转换-> UTC显示时间(datetime)
# 显示时间(datetime) 转换-> UTC时间戳(timestamp)
# UTC,协调世界时,又称世界统一时间,可以认为是时区为0的时间。
import time
import datetime
import calendar
aDatetime = datetime.datetime(1970, 1, 1, 0, 0, 1)
aTimestamp = 1
# 获取时区时差
print "time.timezone: " , time.timezone
# 根据自定义时间,获取显示时间(datetime)。
print "datetime: ", aDatetime
print "timetuple: ", aDatetime.timetuple()
print "time.strptime: ", time.strptime("1970-1-1 0:1:1", "%Y-%m-%d %H:%M:%S")
# 根据时间戳(timestamp),获取UTC显示时间(datetime)。即:时间戳(timestamp) 转换-> 显示时间(datetime)。
print "time.gmtime: timestamp(%s)->datetime(%s)" % (aTimestamp, time.gmtime(aTimestamp))
print "datetime.datetime.utcfromtimestamp: timestamp(%s)->datetime(%s)" % (aTimestamp, datetime.datetime.utcfromtimestamp(aTimestamp))
# 根据显示时间(datetime),获取UTC时间戳(timestamp)。即:显示时间(datetime) 转换-> 时间戳(timestamp)。
print "calendar.timegm: datetime(%s)->timestamp(%s)" % (aDatetime.timetuple(), calendar.timegm(aDatetime.timetuple()))
dt = time.gmtime(aTimestamp - time.timezone) # time.mktime转换时间是带时区的,所以需要减掉时区时差
print "time.mktime: datetime(%s)->timestamp(%s)" % (dt, time.mktime(dt))
运行后的输出结果如下:
time.timezone: -28800 datetime: 1970-01-01 00:00:01 timetuple: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=-1) time.strptime: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=-1) time.gmtime: timestamp(1)->datetime(time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)) datetime.datetime.utcfromtimestamp: timestamp(1)->datetime(1970-01-01 00:00:01) calendar.timegm: datetime(time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=-1))->timestamp(1) time.mktime: datetime(time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0))->timestamp(1.0)
总结
以上内容涵盖了Python中UTC时间转换的关键知识点,希望能为读者的学习或工作提供有价值的参考。感谢支持,如需了解更多相关技术细节,请参阅其他相关链接。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









