2 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果替換tzinfo為timezone.utc,Python 將假定8/8/20, 8:00 為UTC。你想要的是astimezone()。如果你不傳遞時(shí)區(qū),它會(huì)自動(dòng)使用你機(jī)器的本地時(shí)間[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
請(qǐng)注意,默認(rèn)情況下,Python 會(huì)假定沒(méi)有時(shí)區(qū) (tzinfo=None) 的日期時(shí)間對(duì)象屬于當(dāng)?shù)貢r(shí)間 - 因此您甚至可以省略 .astimezone()!但是,我更愿意設(shè)置時(shí)區(qū),以便更清楚地了解正在發(fā)生的事情。
如果你想檢查另一個(gè)時(shí)區(qū),你可以使用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貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
我就是這樣解決的
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)
添加回答
舉報(bào)