2017-05-02 10 views
0

注文の具体的なcreatedAt日時のヒストグラムを作成しようとしているときに問題が発生しています。日時とPytzタイムゾーン.weekday()の問題

import datetime 
import pytz 

value = { 
    'createdAt': '2017-04-24T00:48:03+00:00' 
} 
created_at = datetime.datetime.strptime(value['createdAt'], '%Y-%m-%dT%H:%M:%S+00:00') 

timezone = pytz.timezone('America/Los_Angeles') 

created_at_naive = created_at 
created_at_aware = timezone.localize(created_at_naive) 

print(created_at_naive) # 2017-04-24 00:48:03 
print(created_at_aware) # 2017-04-24 00:48:03-07:00 
print(created_at_naive.weekday()) # 0 (Monday) 
print(created_at_aware.weekday()) # 0 (should be Sunday) 
:問題は、次のようにしても後のタイムゾーンを意識日付時刻を作成し、 .weekday()が、それは別の時間であるべきにもかかわらず

、同じ日として表示され、私はこの発生をテストするために使用しているコードがあるということです

答えて

1

問題は、あなたが実際に新しいタイムゾーンへの日時を変更する必要があるということです。

>>> timezone('UTC').localize(created_at) 
datetime.datetime(2017, 4, 24, 0, 48, 3, tzinfo=<UTC>) 

>>>timezone('UTC').localize(created_at).astimezone(timezone('America/Los_Angeles')) 
datetime.datetime(2017, 4, 23, 17, 48, 3, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>) 
+0

ああ!それは全く意味をなさない。 UTCの時刻が 'America/Los_Angeles'のタイムゾーンになる前に、元の時刻がUTCであると仮定する必要があります。本当にありがとう!私はあなたのページの外にこの答えを見つけることができませんでした! Btw、私は 'pytz.utc'は' pytz.timezone( 'UTC') 'と同じだと信じています – Blairg23