2016-10-27 1 views
6
>>> t = datetime.datetime(2016, 11, 27, 14, 46, 0, 0) 
tz = pytz.timezone('America/Vancouver') 
utc = tz.localize(t).astimezone(pytz.utc) 
now = datetime.datetime.utcnow() 

>>> print t, tz, utc, now 
2016-11-27 14:46:00 America/Vancouver 2016-11-27 22:46:00+00:00 2016-10-27 21:49:33.723605 

なぜUTC == 2016年11月27日:46:00 + 00:00 代わりに2016年11月27日:46:00 + 00:00pytzを使用して現地時間をUTCに変換すると、DSTが追加されますか?

おかげバンクーバーは夏時間を観察するため

+0

@roganjoshはどういう意味ですか? – Rastio

答えて

4

さて、その3月13日2016年11月6日の間

thisを参照)ですが、バンクーバーはUTC-7です。 11月6日以降はUTC-8です。だから2:46 PM(14:46)今日は(2016年10月27日)はタイムゾーンのDST部分に残り、UTCでは14 + 7 = 21(9:46 PM)になります。

11月27日(変換する日付)バンクーバーはすでに「標準」(非DST)の時間(UTC-8)に戻っています。したがって、2016年11月27日のバンクーバーでの14:46 PMは14 + 8 = 22(10:46 PM)。実際には、11月6日以降の任意の日付については、そのようになっています。

+1

ああ、10月が10ヶ月だと分かっていれば助けになるだろう。ありがとう@BorrajaX – Rastio

+0

しかし、これはなぜ私に〜30分の出力を与えるのですか? – roganjosh

+0

'2016-11-27 14:46:00アメリカ/バンクーバー2016-11-27 22:46:00 + 00:00 2016-10-27 22:07:25.008000' UK – roganjosh

関連する問題