日付があり、タイムゾーンを認識させる必要があります。
local_tz = timezone('Asia/Tokyo')
start_date = '2012-09-27'
start_date = datetime.strptime(start_date, "%Y-%m-%d")
start_date = start_date.astimezone(local_tz)
now_utc = datetime.now(timezone('UTC'))
local_now = now_utc.astimezone(local_tz)
これが真実かどうかを見つける必要があります:
print start_date>local_now
しかし、私はこのエラーを受け取ります。
start_date = start_date.astimezone(local_tz)
ValueError: astimezone() cannot be applied to a naive datetime
Utcを東京に問題なく変換します。東京でstart_dateタイムゾーンを認識する広告を作成する必要があります。
ありがとう
pytz
タイムゾーンの場合、.localize()
メソッドを使用して、単純なdatetime
オブジェクトをタイムゾーンを持つものに変換します。
_start_date = local_tz.localize(start_date)
_
DSTトランジションのないタイムゾーンの場合、 .replace()
method は、タイムゾーンを単純なdatetime
オブジェクトにアタッチするために通常機能するはずです:
_start_date = start_date.replace(tzinfo=local_tz)
_
詳細については、pytzのドキュメントの ローカライズされた時刻と日付の計算 を参照してください。
local_tz.localize(naive_dt, is_dst=None)
を使用して、単純なdatetimeオブジェクトをタイムゾーン対応オブジェクトに変換できます。
from datetime import datetime
import pytz
local_tz = pytz.timezone('Asia/Tokyo')
start_date = local_tz.localize(datetime(2012, 9, 27), is_dst=None)
now_utc = datetime.utcnow().replace(tzinfo=pytz.utc)
print start_date > now_utc
is_dst=None
は、指定されたローカル時間があいまいな場合に.localize()に強制的に例外を発生させます。
Django Rest Frameworkを使用している場合、次のようにDateTimeFieldクラスをオーバーライドできます。
class DateTimeFieldOverridden(serializers.DateTimeField):
def to_representation(self, value):
local_tz = pytz.timezone(TIME_ZONE)
value = local_tz.localize(value)
return super(DateTimeFieldOverridden, self).to_representation(value)
そして、あなたはあなたのシリアライザで次のようにそれを使用します:
date_time = DateTimeFieldOverridden(format='%d-%b-%Y', read_only=True)
これが誰かを助けることを願っています。