2 回答

TA贡献1821条经验 获得超6个赞
如果替换tzinfo为timezone.utc,Python 将假定8/8/20, 8:00 为UTC。你想要的是astimezone()。如果你不传递时区,它会自动使用你机器的本地时间[docs]。
from datetime import datetime, timezone
timerangestart = '8/8/20, 8:00'
# parse the string and localize to your time zone (OS setting):
my_time = datetime.strptime(timerangestart, '%m/%d/%y, %H:%M').astimezone()
ts_ms = my_time.timestamp() * 1000 # no need to convert to UTC; UNIX time (should) always refer to UTC
请注意,默认情况下,Python 会假定没有时区 (tzinfo=None) 的日期时间对象属于当地时间 - 因此您甚至可以省略 .astimezone()!但是,我更愿意设置时区,以便更清楚地了解正在发生的事情。
如果你想检查另一个时区,你可以使用dateutil和例如写
from dateutil.tz import gettz
my_time = datetime.strptime(timerangestart, '%m/%d/%y, %H:%M').replace(tzinfo=gettz('US/Eastern'))
ts_ms = my_time.timestamp() * 1000

TA贡献1828条经验 获得超3个赞
我就是这样解决的
timerangestart = '8/8/20, 8:00'
my_time = datetime.strptime(timerangestart, '%m/%d/%y, %H:%M')
timerangestart = pytz.timezone("Asia/Kolkata").localize(my_time).astimezone(pytz.timezone("UTC"))
timestart = int(timerangestart.timestamp() * 1000)
添加回答
举报