str转换为datetime
注意转换后的datetime是没有时区信息的
但是作业str转datetime后转换成timestamp时,时区是默认为当前系统时区,验证如下:
import re from datetime import datetime, timezone, timedelta dt_str = '2019-3-4 14:47:30' tz_str = 'UTC+8:00'
dt = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S') tz = re.match(r'^UTC([-+]?\d{1,2}):\d\d$', tz_str).group(1) tz_utc = timezone(timedelta(hours = int(tz))) dt_utc = dt.replace(tzinfo = tz_utc)
ts_utc= dt_utc.timestamp() ts = dt.timestamp()
print(ts_utc) print(ts) print((ts - ts_utc)/3600)
运行结果: 1551682050.0 1551682050.0 0.0
老弟,你这个逻辑有点问题啊 最后ts-ts_utc不应该等于0啊
老哥我想表达的就是strptime后再转timestamp时会默认以当前系统时区转换,tz_str = 'UTC+9:00'时ts-ts_utc结果为1,不知道是不是这么理解
Sign in to make a reply
Gin阿金
str转换为datetime
但是作业str转datetime后转换成timestamp时,时区是默认为当前系统时区,验证如下:
import re from datetime import datetime, timezone, timedelta dt_str = '2019-3-4 14:47:30' tz_str = 'UTC+8:00'
dt = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S') tz = re.match(r'^UTC([-+]?\d{1,2}):\d\d$', tz_str).group(1) tz_utc = timezone(timedelta(hours = int(tz))) dt_utc = dt.replace(tzinfo = tz_utc)
ts_utc= dt_utc.timestamp() ts = dt.timestamp()
print(ts_utc) print(ts) print((ts - ts_utc)/3600)