Python 时间戳转换的时区问题

背景

本文基于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时区
需要消除时区的影响

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值