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)
添加回答
舉報