最近项目进行开发时,接收到一个时间字符串,需要把这个时间字符串转换成指定时区的时间,并计算出纪元时间。找了很多资料文档,介绍的虽然都比较详细,但是不符合我的需求,而且同一个点介绍的情况不一样,觉得有些混乱。经过大量资料查阅并亲自实际操作后终于实现了,这里做一下记录。
参考资料:How To Convert Non-UTC Timestamp Into UNIX Epoch Time In Python
这里分两种情况:1、服务器默认时区和目标时区一致;2、服务器默认时区和目标时区不一致。
1、服务器默认时区与目标时区一致的场合:
这种场合下就没必要去转换时区了,先将利用time模块的time.strptime()将时间转换成datetime时间元组,这样就可以直接使用time模块的time.mktime(datetime时间元组),获得纪元时间。
# 将datetime转换成纪元时间
# @param dt datetime时间
# @param format 时间格式
# @return 纪元时间
def __unix_time(dt, format):
try:
# 转换为时间数组
time_arr = time.strptime(dt, format)
# 转换为UNIX时间戳
timestamp = time.mktime(time_arr)
return timestamp
except [OverflowError, ValueError]:
return None
现在来测试一下:
print(__unix_time("2019-07-14 11:23:36", "%Y-%m-%d %H:%M:%S"))
执行结果:
1563074616.0
Process finished with exit code 0