![](/img/trans.png)
[英]Issue with python/pytz Converting from local timezone to UTC then back
[英]Converting python datetime to timestamp and back in UTC still uses local timezone
我正在使用一個代碼,它給我utc時間戳,我想將它們轉換為適當的日期時間。 不幸的是,當我用pytz測試簡單的情況時,日期時間增加了6個小時(CST偏移到UTC)。 我需要保持時區數據的正確性,因為我正在計算其他時區之間的差異。 任何想法為什么以及如何將utc時間戳轉換為utc日期時間?
In [1]: import pytz
In [2]: from datetime import datetime
In [3]: import time
In [4]: datetime.fromtimestamp(time.mktime(datetime(7,1,1, tzinfo=pytz.UTC).timetuple()), tz=pytz.UTC)
Out[4]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)
In [5]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()), tz=pytz.UTC)
Out[5]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)
In [6]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()))
Out[6]: datetime.datetime(2007, 1, 1, 0, 0)
從“紀元以來的秒數”時間戳獲取一個表示UTC時間的天真日期時間對象:
from datetime import datetime
utc_dt = datetime.utcfromtimestamp(ts)
如果要獲取UTC時區的感知日期時間對象:
import pytz
aware_utc_dt = utc_dt.replace(tzinfo=pytz.utc)
要將其轉換為其他時區:
tz = pytz.timezone('America/Montreal')
dt = aware_utc_dt.astimezone(tz)
要將時間戳直接轉換為給定時區中的感知日期時間對象:
dt = datetime.fromtimestamp(ts, tz)
嗯,我在這里找到答案: 如何在轉換為Unix時指定時區(UTC)? (蟒蛇)
In [101]: ts = calendar.timegm(datetime(2010, 7, 1, tzinfo=pytz.utc).timetuple())
In [102]: datetime.fromtimestamp(ts, tz=pytz.utc)
Out[102]: datetime.datetime(2010, 7, 1, 0, 0, tzinfo=<UTC>)
您是否恰好在美國CST時區或同等地區?
看起來它顯示當你的當地時間是2007年1月1日午夜時的UTC時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.