2

特定のタイムゾーン時間で取得した日付がありますが、システムはそれを UTC として処理し、後でそのタイムゾーンに変換して時間を混乱させます。

たとえば、次のようにします。

今回は2014-05-05 10:50:30. その日時オブジェクト。タイムゾーン情報はありませんが、その時間を使用するユーザーからタイムゾーン情報を取得できます。問題は、この時間が「ヨーロッパ/ビリニュス」時間として表示されることですが、システムはそれを UTC として扱い、時間をユーザーに出力するときに +3 時間を追加して間違った時間を表示します。そのdatetimeオブジェクトでタイムゾーンをユーザーのタイムゾーンに変更しても問題ありませんが、+3時間で出力されます。

例 (コードのスニペット):

from datetime import datetime
import pytz         
create_date = datetime.strptime(stage_log.create_date, "%Y-%m-%d %H:%M:%S")
tz = pytz.timezone(self.user_id.tz)
create_date = create_date.replace(tzinfo=pytz.utc)

これは何もせず、私はまだ間違った時間を取得しています。

次のように、時間を正しい UTC 時間に移動する方法はありますか (そのため、システムはユーザーのタイムゾーンに正しく変換されます)。

2014-05-05 10:50:30-> UTC に変換します。タイムゾーンが「Europe/Vilnius」の場合、その時間を に変換する必要があり2014-05-05 07:50:30ます。次に、システムが自動的に変換を行うと2014-05-05 10:50:30、それが表示されるべき時間であるため、正しく表示されます。

また、指定されたタイムゾーンが UTC と異なる時間数を取得する方法がある場合は、次のように簡単に実行できます。

create_date.replace(hour=create_date.hour-timezone_difference)

4

1 に答える 1