13

UTC日時をスウェーデン語形式に変換すると、夏時間が含まれます(CEST)。ただし、タイムゾーンとしてスウェーデンを使用して日時を作成する場合、CESTではなくCETを取得します。どうしてこれなの?

>>> # Modified for readability
>>> import pytz
>>> import datetime
>>> sweden = pytz.timezone('Europe/Stockholm')
>>>
>>> datetime.datetime(2010, 4, 20, 16, 20, tzinfo=pytz.utc).astimezone(sweden)
datetime(2010, 4, 20, 18, 20, tzinfo=<... 'Europe/Stockholm' CEST+2:00:00 DST>)
>>> 
>>> datetime.datetime(2010, 4, 20, 18, 20, tzinfo=sweden)
datetime(2010, 4, 20, 18, 20, tzinfo=<... 'Europe/Stockholm' CET+1:00:00 STD>)
>>>
4

2 に答える 2

13

オブジェクトはswedenデフォルトでCETタイムゾーンを指定しますが、CESTがいつ開始および停止するかを知るのに十分な情報が含まれています。

最初の例では、datetimeオブジェクトを作成して現地時間に変換します。オブジェクトはsweden、渡したUTC時間が夏時間中に発生することを認識しており、適切に変換できます。

2番目の例では、datetimeコンストラクターは常に入力を非夏時間として解釈し、適切なオブジェクトを返します。

入力を実時間として扱い、適切datetimeな夏時間設定を選択した場合、時計が戻される時期にはあいまいさが生じます。壁掛け時計では、同じ時間が2回発生します。したがって、オブジェクトdatetimeを作成するときに使用しているタイムゾーンを指定する必要があります。datetime

于 2010-04-17T20:46:47.060 に答える
0

タイムゾーンの略語は一意ではありません。たとえば、「IST」は「アイルランド標準時」、「イラン標準時」、「インド標準時」、または「イスレアリ標準時」を指す場合があります。それを解析することに頼るべきではなく、代わりにzoneinfoタイムゾーンを使用する必要があります。

于 2010-11-09T14:56:11.850 に答える