python中datetime不同时区转换

概念

GMT时间:Greenwich Mean Time, 格林尼治平均时间

UTC时间:Universal Time Coordinated 世界协调时,可以认为是更精准的GMT时间,但两者误差极小,在1s以内,一般可视为等同

LMT:Local Mean Time, 当地标准时间

可能存在的问题

在使用datetime获取当前时间时,可能会根据计算机或系统环境不同产生区别,最好使用统一的时间戳或规定时区的方式。
比如当前系统默认东八区的当地时间,那么获取datetime.now()时返回的日期时间可能是2023-03-22 01:00:00, 对于本地而言是3月22日,但如果换一台服务器,datetime.now()时返回的日期时间可能是UTC时间, 那就是2023-03-21 17:00:00,此时日期会变成3月21日.

时间格式转换

# 当前时间戳
time_now = time.time()
>>1679461972.1435885
# 时间戳转为datetime。规定时区-东八区
time_local = datetime.datetime.fromtimestamp(time_now, tz=pytz.timezone('Etc/GMT-8'))
>>2023-03-22 13:12:52.143589+08:00
# 时间戳转字符串 
time_str = time_local.strftime('%Y%m%d')
>>'20230322'
# 获取当前日期0时0分
today = datetime.datetime.strptime(time_str, '%Y%m%d')
>>2023-03-22 00:00:00
# 获取当前日期0时0分。规定时区-东八区
today = datetime.datetime.strptime(time_str, '%Y%m%d').astimezone(pytz.timezone('Etc/GMT-8'))
>>2023-03-22 00:00:00+08:00
# 获取统一的时间戳(单位为秒)
today.timestamp()
>>1679414400.0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值