2

現在の日付を値として取るようにデフォルトを指定している日時フィールドを使用して、現在の日付をモデルに保持しています。

_defaults = {
        'f_inicio' : lambda *a: datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    }

現在の日付が「07/10/2013 17:24:05」であると仮定すると、ビューの日付は「07/10/2013 12:24:05」であり、データベースで修正され、日付は「07/10」です/2013 17:24:05'; これが5時間を引いていることを収集します。ユーザーはタイム ゾーン「アメリカ/ボゴタ」を設定できます。コロンビアは地域 (GTM - 5:00) にあります。しかし、表示すべき値がまったく異なるため、ユーザーに適切に表示する方法がわかりません。どうやらこれはGTMコロンビアを「GTM 0」としています。デフォルトとして私に与えられたはずのcreate_dateフィールドのおおよその日付は、「2013-10-07 22:24:05.384」です。

何が起こっているのか誰でも知っています。私を夢中にさせているこの問題に関する助けに本当に感謝しています。

4

1 に答える 1

5

これは過去に私を夢中にさせました。これは実に単純な問題です。

データベースに保存される日付は UTC (GMT-0) タイムゾーンです。その人物のタイムゾーンが GMT - 5:00 に設定されていると仮定すると、データベースに値を保存する際に、日付に 5 時間 (正確には 5 時間、多かれ少なかれではありません) が追加され、UTC 時刻が取得されます。データベースに格納します。同じものを表示すると、ユーザーのタイムゾーンがチェックされ、その GMT - 5:00 が検出されるため、データベース時間が 5 (これも正確に 5 であり、多かれ少なかれではありません) 減算され、ユーザーが表示されます。

これは、異なるタイムゾーンで使用されるシステムに最適です。したがって、入力はUTC(GMT-0)に保存されたユーザーのタイムゾーンで取得され、ユーザーのタイムゾーンに表示されることを理解してください(ユーザーが表示しているタイムゾーンが異なる場合でも、時間はタイムゾーンに正確になります)

注:ユーザーにタイムゾーンが設定されていない場合、ブラウザのタイムゾーンが考慮され、上隅に警告アイコンが表示されます。

それでおしまい。これにより、より明確になることを願っています!!

于 2013-10-08T04:33:03.457 に答える