1

DataTimeField no time zoneを作成しています。まもなく私はこのTZを「手動で」編集してから、ローカルのTZで値を読み取ろうとしています。最終結果が6分を補正するのを見てください!"tzinfo"を置き換え、localtimeで補正します。6分補正します。

ロジック:

>>> import datetime 
>>> from django.utils import timezone 
>>> test = datetime.datetime(2016, 9, 28, 10, 10, 10) 
datetime.datetime(2016, 9, 28, 10, 10, 10) 

>>> test = teste.replace(tzinfo=pytz.timezone('America/Sao_Paulo')) 
datetime.datetime(2016, 9, 28, 10, 10, 10, tzinfo=<DstTzInfo 'America/Sao_Paulo' LMT-1 day, 20:54:00 STD>) 

>>> timezone.activate(pytz.timezone('America/Sao_Paulo')) 
>>> timezone.localtime(test) 
datetime.datetime(2016, 9, 28, 10, 16, 10, tzinfo=<DstTzInfo 'America/Sao_Paulo' BRT-1 day, 21:00:00 STD>) 

注:アイデアは、これは二段階で起こるということです。まず、TimeZoneの作成でベンチを守りたい。次に、ユーザーのTimeZoneを使用してユーザーに表示します。この場合、両方のユーザーは同じ地域でした。

申し訳ありません私の英語


@ user6897474からの応答に続いて、実際に入れて、私はこのソリューションを得た:

私は保存する前に、POSTのための日時及びserializabelファイルを取得しています、行います以下ません:

:tzinfoのを交換して

class CheckControllerSerializer(serializers.ModelSerializer): 
    def create(self, validated_data): 
     datetime = validated_data['datetime'].replace(tzinfo=None) 
     validated_data['datetime'] = pytz.timezone('America/Sao_Paulo').localize(datetime) 

     return super(CheckControllerSerializer, self).create(validated_data) 

=なし、私はあなたが次のエラーに問題がないことを保証します

Not naive datetime (tzinfo is already set)

答えて

3

使用timezone.localize代わりのdatetime.replace

>>> test = datetime.datetime(2016, 9, 28, 10, 10, 10) 
>>> test = pytz.timezone('America/Sao_Paulo').localize(test) 
datetime.datetime(2016, 9, 28, 10, 10, 10, tzinfo=<DstTzInfo 'America/Sao_Paulo' BRT-1 day, 21:00:00 STD>) 

>>> timezone.activate(pytz.timezone('America/Sao_Paulo')) 
>>> timezone.localtime(test) 
datetime.datetime(2016, 9, 28, 10, 10, 10, tzinfo=<DstTzInfo 'America/Sao_Paulo' BRT-1 day, 21:00:00 STD>) 

参考:

  1. pytz.localize vs datetime.replace

  2. datetime object, when rendered to Django template, was always 6 minutes off

+0

優秀、ありがとうございました。ちょうど最後の質問:タイムゾーンを設定することは、何かグローバルな要求ですか、制限されていますか? (私はそれが第2の選択であることを願っています) –

+0

ステートレスでなければなりません。 – Francis

関連する問題