2011-07-07 8 views
2

私が作成した日付は、いくつかのシナリオでは夏時間を尊重していないため、Pythonで日付を作成する際に問題が発生しています。例えばpython datetime.datetime夏時間のある正しいタイムゾーン情報を返さない

、私は自分の殻に行って、

>>> adjust_datetime_to_timezone(value=datetime.datetime.now(), from_tz=timezone('UTC'), to_tz=timezone('US/Pacific')) 
datetime.datetime(2011, 7, 7, 12, 41, 16, 337918, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>) 

を実行する場合、私は正確な時刻を取得します。

私は現在の日付の開始の日付を作成したいので、私は実行します。私はUTCに変換するときので、PSTの日付である

>>> datetime.datetime(year=2011, month=7, day=7, tzinfo=timezone('US/Pacific')) 
datetime.datetime(2011, 7, 7, 0, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>) 

注:

>>> adjust_datetime_to_timezone(datetime.datetime(year=2011, month=7, day=7, tzinfo=timezone('US/Pacific')), from_tz=timezone('US/Pacific'), to_tz=timezone('UTC')) datetime.datetime(2011, 7, 7, 8, 0, tzinfo=<UTC>) 

2011年7月7日の08:00 AM UTCは実際には午前1時(現地時間)のPDTです。

pythonが私にdatetime.datetimeコンストラクタのPST日付を与えるのは誰でも知っていますが、adjust_datetime_to_timezoneではできません。

+0

これは直接あなたの質問に答えていませんが、私はプログラミングの時に対処するためのヒントについては、昨日の良いページを見ました: http://unix4lyfe.org/time/ –

+1

'adjust_datetime_to_timezone'と' timezone'はどこから来ていますか? –

答えて

1

<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>が表示されているので、pytzを使用しているようです。その場合、localizeメソッドを使用して、夏時間に合わせて調整されたタイムゾーン対応の日付時刻を作成できます。 (それは夏時間を調整しないためdatetime.datetime年代tzinfo引数を使用しないでください。)

import pytz 
import datetime as dt 

now=dt.datetime(year=2011, month=7, day=7) 
utc=pytz.utc 
pacific=pytz.timezone('US/Pacific')  
now_pacific=pacific.localize(now)  
now_utc=now_pacific.astimezone(utc) 

print(repr(now_pacific)) 
# datetime.datetime(2011, 7, 7, 0, 0, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>) 
print(repr(now_utc)) 
# datetime.datetime(2011, 7, 7, 7, 0, tzinfo=<UTC>) 
関連する問題