背景
本文基于python 3.6 使用datetime模块来解决问题
这个话题起源于客户的一个需求 发过来的时间戳是以1970年1月1日0点为计时起点时间的
所以本文探究了一下时区对转换的影响
# -*- coding: utf-8 -*-
from datetime import datetime, timedelta, timezone
def date_time_vision_test1( stamp):
msgtime = int(stamp)
logstime = datetime.utcfromtimestamp(msgtime)
logstime = logstime.strftime("%Y-%m-%d %H:%M:%S")
return logstime
def date_time_vision_test2( stamp):
msgtime = int(stamp)
logstime = datetime.fromtimestamp(msgtime, tz=None)
logstime = logstime.strftime("%Y-%m-%d %H:%M:%S")
return logstime
def date_time_vision_test3( stamp):
msgtime = int(stamp)
logstime = datetime.fromtimestamp(msgtime)
logstime = logstime.strftime("%Y-%m-%d %H:%M:%S")
return logstime
def date_time_vision_test4( stamp):
msgtime = int(stamp)
logstime = datetime.utcfromtimestamp(msgtime).replace(tzinfo = timezone.utc).astimezone(tz = None )
logstime = logstime.strftime("%Y-%m-%d %H:%M:%S")
return logstime
ts = datetime.now().timestamp()
print(ts)
print( date_time_vision_test1( ts ))
print( date_time_vision_test2( ts ))
print( date_time_vision_test3( ts ))
print( date_time_vision_test4( ts ))
运行结果
1632730591.840916
2021-09-27 08:16:31
2021-09-27 16:16:31
2021-09-27 16:16:31
2021-09-27 16:16:31
总结
通过以上测试
我们可以看到datetime的接口使用utc获取的就是0时区
需要消除时区的影响