2016-12-07 7 views
1

datetimeオブジェクトをhttpを介して(jsonオブジェクトのフィールドとして)別のサーバーに渡す文字列に変換しています。 strptime。ただし、断続的に2段階の変換を行っても、もともと変換されたのと同じデータにはなりません。常に、エラーは最終日時オブジェクトの1秒の短縮です。python datetime:strptimeとstrftimeで同じデータが正しく変換されない

私のPythonバージョンは両方のサーバーで2.7.6です。

送信サーバーはdjangoバージョン1.8.2で実行されています。受信サーバはdjangoバージョン1.9で動作しています。

変換/逆変換に使用している日付形式は、「%Y-%m-%dT%H:%M:%S.%fZ」です。

変換(ジャンゴ1.8.2サーバー上):(ジャンゴ1.9サーバー上)

in_time = datetime.datetime.now() 
input_time_str = datetime.datetime.strftime(input_time, "%Y-%m-%dT%H:%M:%S.%fZ") 

デ・コンバージョン:

input_time = datetime.datetime.strptime(input_time_str, "%Y-%m-%dT%H:%M:%S.%fZ") 

は、この現象が発生することになっているか、いくつかのバージョンの不一致が原因となっていますこの? ご協力いただければ幸いです。

+0

'strptime'はタイムゾーン情報を破棄することがありますが、これは問題の可能性があります。代わりに 'python-dateutil'のパーサーを試してみてください。 –

答えて

0

datetime.now()は、ローカルタイムゾーンの時刻を返します。その後、strptime()がその時間を解析するとき、それはそれが参照するタイムゾーンを知らない。おそらく、システムのデフォルトのタイムゾーンが想定されています。これは他のシステムとは異なる場合があります。

代わりにdatetime.utcnow()を使用して、時刻をUTCで取得できます。

関連する問題