3

私が取り組んでいるアプリケーションのターゲット ユーザーは USA です。そして (ご存じかもしれませんが) アメリカには複数のタイム ゾーンがあります。だから私はいくつかの疑問があります:

  • では、現在のユーザーに基づいてサーバー側で現在の時刻を取得するにはどうすればよいですか?
  • DateTimeまた、データを保存してすべてのユーザーの正確な時刻を表示するにはどうすればよいでしょうか?
  • 時間を比較するにはどうすればよいですか (例: user.event.created > datetime.now())? どのタイムゾーンを.now()使用しますか?
  • ファイルにどの TIME_ZONE を設定する必要がありsettings.pyますか。

これは API 用であり、JS を介してユーザーのタイムゾーンを取得することはできません。TokenAuthentication を介して現在のユーザーを取得します。

4

4 に答える 4

0

解決策は、UNIX タイムスタンプを常にデータベースに保存することです。で生成できますtime.time()。つまり、モデルには Floatfield (必要な精度によっては BigIntegerField も) が必要です。

テンプレートは数値をそのまま表示する必要があります。次に、その UNIX タイムスタンプを日時に変換するために、ほんの少しの JavaScript が必要です。

new Date(unix_timestamp);
于 2015-09-04T01:23:11.337 に答える
0

Don't use datetime.now(), use the now() function in the timezone module instead.

from django.utils import timezone

now = timezone.now()

Django will figure out which timezone you are in and compare them accordingly.

user.event.created > timezone.now()

https://docs.djangoproject.com/en/1.8/topics/i18n/timezones/

于 2015-09-03T19:21:34.547 に答える