問題タブ [django-timezone]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Django default=timezone.now() は「古い」時間を使用してレコードを保存します
この問題は数週間断続的に発生しており、私のプロジェクトで発生したものとは異なります.
使用されている 2 つのモデルにはタイムスタンプ フィールドがあり、デフォルトで に設定されていますtimezone.now()
。
これは、エラー フラグを立てるシーケンスです。
モデル 1 は午後 7 時 30 分に作成されます
モデル 2 は午後 10 時に作成されますが、MySQL データベースでは午後 7 時 30 分として保存されます。
作成されたすべてのモデルには、特定の期間が経過するまで、実際の時刻ではなく午後 7 時 30 分未満のタイム スタンプが保存されます。その後、新しい時刻が設定され、後続のすべてのモデルがその新しい時刻になります... Bizzare
問題の発見に役立つ可能性のある追加の詳細:
tzinfo
タイムゾーンからタイムゾーンを取り除き、それらを UTC に置き換えるために使用するメソッドがたくさんあります。
これはtimezone.now() - creationTime
、プロジェクトで「モデルはこのずっと前に投稿された」機能を作成するための計算を行っているためです。ただし、実際にはこれが問題の原因であってはなりません。
使っても変わらないと思いdatetime.datetime.now()
ます。
とにかく、助けてくれてありがとう!
django - Django AdminでDateTimeFieldをローカルタイムにフォーマットするにはどうすればよいですか?
現地時間とタイムゾーンに従ってAdminでDateTimeFieldをフォーマットする方法は?
私のsettings.py:
pytzパッケージがインストールされます。
モデル:
また、設定で日付の書式設定を試しましたが、管理者リストの表示で日時オブジェクトが文字列に変換される方法は変更されていません。
データベースに日時が正しく保存されている「2012-11-2008:57:15.901341+01」。ただし、adminで表示される場合は、常にUTCで表示されます。
ModelAdminでフォーマットを処理するメソッドを準備できますが、管理者クラスが次のようになりたいので、実際にはDRYではありません。
django - 奇妙なタイムスタンプとタイムデルタ形式 - それらを変換する方法は?
日付を (文字列として) 奇妙な形式で返す外部 API を使用しています。
それらをこの形式に変換したい:
これを行う簡単な方法はありますか?view
私は私のまたはでそれらを変換することができますtemplate
編集 - - - - - - - - - - - - - - - - - - - - - - - - - ----------
タイムスタンプの解決策を見つけました:
python - タイムゾーンフィールド/テンプレート出力の奇妙な動作を伴う日時
タイムゾーン設定settings.py:
データベーステーブルに記録します(postgresql 9.1、タイムゾーン付きのタイムスタンプ:
2012-12-19 15:30:51.164368 + 04
Django日付フィルター:
そして、このすべての操作の後、日時は次のようにテンプレートに出力を提出しました:
19.12.2012 11:30:51
なぜこれが起こるのですか?なぜdjangoはTZ情報を使用しないのですか?
python - UTCオフセットを持つdjango DateTimeField?
DateTimeField を持つモデルがあります。
ユーザーは、フィールドに日付、時刻、およびタイムゾーン情報を入力できる必要があります。これは私の希望の形式です:
dbに保存する前に、時間がUTCに変換されると思います。そのためのモデルフォームを使用してみましたが、Enter a valid date/time.
上記の値を入力すると、その DateTimeField で検証エラーがスローされます。
これはsettings.pyにあります:
私は何が欠けていますか?
編集:
Видул Петров の提案に従って、フォーム フィールドを使用しようとしました。
同じ効果を得ました:Enter a valid date/time.
編集 2
datetime は「%z」パラメータを処理できないようです。これは ValueError をスローします:
だから私はコンソールでそれをテストしました:
ピッツも試しました:
これはうまくいくはずだと本当に感じています。そうでないと言っているドキュメントの一部を見逃しましたか?
python - Djangoがtimezone.nowと__rangeが壊れている日の範囲でクエリを実行していますか?
PostgreSQLデータベース(9.2.2)を使用してDjango1.4.3とPython2.7を実行しています。ユーザーがレコードを最後に表示したときのタイムスタンプである「last_view」フィールドを持つモデルがあります。フロントページに、先週最も閲覧された10個のアイテムを表示したいので、ListViewでクエリセットにこれを使用してみました。
これは、最初にページを読み込んだときに機能します。レコードのいずれかをクリックして「表示」すると、データベースのlast_view属性が更新されますが、ページをリロードすると、このアイテムは「最近表示された」リスト(上記のクエリセットによって形成されます)から消えます。
問題はこの投稿に関連していると思いました。timezone.now()の「終了日」は、サーバープロセスを開始するタイミングによって制限されているようです。したがって、サーバーの実行後にリンクをクリックすると、「現在の時刻」は「now()」と比較して将来的になり、範囲外になります(そのため、クリックしたレコードはページの再読み込み時に表示されなくなります)。ただし、上記の投稿のように今すぐに変更すると、ページの読み込み時にエラーが発生します。
-:'function'および'datetime.timedelta'のサポートされていないオペランドタイプ
そのため、startdate変数を作成できません。クエリセットを_rangeから_gteに変更することでこれを機能させることができますが、now()が実際に「現在の時刻」ではなくサーバープロセスの開始時にタイムスタンプが付けられている場合、時間の経過とともに中断するようです。
テストに関するDjangoチュートリアルでは、日付を超えてクエリを実行する際のnowの使用法は示されていますが、 nowから日数を減算する方法や、timedeltaまたは日付範囲で使用する方法は示されていません...
誰かが実際の現在の時刻との時差を取る方法、つまりnow()の代わりにnowを使用する方法を説明できますか?また、 now()とnowの使用の制限についても理解を深めたいと思います。timedelta()で見つけることができるすべての例は、timezone.now()またはdatetime.now()を参照しているため、これに関する優れたドキュメントは見つかりません。
ありがとう!
python - タイムゾーン サポートがアクティブ化された Django プロジェクトでの South 移行の DateTimeField のデフォルト値
タイムゾーンのサポートが有効になっている Django 1.4.3 プロジェクト用に、South 0.7.6 でスキーマの移行を作成しています。
スキーマの移行には、1 つのテーブルにDateTimeField
(with ) を追加することが含まれます。auto_now=True
移行を作成するとき、South から次のように求められます。
既存の行のこの値を気にしない場合 (警告なしで移行を成功させたいだけです)、ここで指定する正しい 1 回限りの値は何ですか?
これまでは、 を使用していdatetime.datetime.utcnow()
ました。ただし、移行を適用すると、次のようになります。
South は pytz や Django ヘルパー クラスをインポートしていないようですが、ここでタイムゾーン対応のデフォルト値を指定するにはどうすればよいですか?
django - django現地時間
テンプレートでUTC時間を現地時間に変換しようとしていますが、何らかの理由で次のようにしています。
まだUTCの値を私に与えます
でも
ローカルタイムゾーン設定を使用して値を取得します
settings.pyのUSE_TZをTrueに設定しても何も起こらないようです
私が間違っていることは何ですか?
python - 日付を印刷するためのdjangoタイムゾーン
TIME_ZONE = 'America/Chicago'
私はsettings.pyに設定されたdjangoプロジェクトを持っています。
私はこのような日付を使用しています:
次に、テンプレートで使用します:
すべてのテンプレートの日付を異なるタイム ゾーン (+6 時間など) で表示したいだけです。しかし、プロジェクトのタイムゾーンを「アメリカ/シカゴ」にして、datetime.now() によって返された日付がこのタイムゾーンにあることを望みます。したがって、表示されるすべての日付をたとえば +6 時間に変更したいだけです。どうすればこれを達成できますか?
編集
これは私にとってはうまくいきます:
+1時間で日付を印刷します。しかし、これはうまくいきません:
日付を変更せずに印刷します。すべてのテンプレートに対してグローバルに設定する必要があります。どうすればそれができますか?
私は常に日付フィルター ( dateobject|date:"d M Y H:i"
) を使用しているので、このフィルターをグローバルに「フック」して に変更する方法はありますdateobject|timezone:"Europe/Paris"|date:"d M Y H:i"
か?