クエリの属性ジャンゴフィルター日付:年、月、日、WEEK_DAY、時、分、秒
プロジェクトレビューブログをやって、私は窓からLinuxプロジェクトに移動し、その後の記事は、月の結果に従ってフィルタリング作品は、空に常にあることをアーカイブするブログ。そして、ビットBaiduの、結果は問題領域です。
Djangoのsettings.py設定ファイルでは、そこに時間と時間帯に関連する2つの設定パラメータは今ある、とUSE_TZはTIME_ZONEです
デフォルト設定ジャンゴTIME_ZONEタイムゾーンアメリカ/シカゴ
別のタイムゾーンにTIME_ZONEセットが、その後の状況も指している場合:
- それはWindowsシステムの場合は、TIME_ZONEの設定は無用である、Djangoは機械の時間を使用します。
- このように設定USE_TZ = Falseの、TIME_ZONEなどの他のシステム、使用のゾーンの時間は、=「アジア/上海」、上海はUTC時間を使用している場合。
ジャンゴクエリのMySQLを使用して、データベースのORM文は時間帯機能USE_TZ =真に対処するための時間が来て、対応するには、このようなconvert_tz(時間伝達関数)などの機能を有効にすると、我々はプロジェクトDjangoの設定ファイルに設定され、地区TIME_ZONEの設定=「アジア/上海のが、MySQLは、正しい時刻アジア/上海を取得することはできませんので、MySQLの上海このタイムゾーンを知っているし、クエリが空のリストを返すときはありません。
最終的な解決策で初:
# 可以使用如下方式进行筛选,筛选的值格式和你DB中的格式对应,比如是2019/04/12还是2017-04-12
article_list = ArticleModel.objects.filter(status='p', add_time__startswith='2019-04-12').order_by('-add_time')
#如果只想根据年月来筛选就是
article_list = ArticleModel.objects.filter(status='p', add_time__startswith='20179-04').order_by('-add_time')
「2019から5」への必要性から、すなわち2019年5月には、0を追加するために、データベースの必要性に合わせて、月と10ヶ月未満「は2019から05」になることに注意してください
解決策1:
USE_TZ =偽:直接setting.pyファイルに
しかし、その後、あなたは、時間帯機能のジャンゴを使用することはできません。(8時間後にはほとんどの時間になり、データベースに格納されています)
解決策2:
2つのシステムが自然にこのファイルのタイムゾーンの変換が含まれていない示したように、それは、Windowsのタイムゾーンの変換をサポートしていません書かれたMySQLの公式ドキュメント:
リンクスであれば示すように、直接、次のコマンドを実行します。
Microsoft Windowsをお使いの場合:
あなたは、ファイルmysqlのゾーンをダウンロードするとします。https://dev.mysql.com/downloads/timezones.html
Cにコピー:\ \ \ MySQLサーバの\データmysqlディレクトリはProgramDataのMySQL 5.7 \
再起動MySQLの
ログmysqlの、実行:
SET TIME_ZONE GLOBAL = '上海のアジア/';
SET TIME_ZONE SESSION = '上海のアジア/';
SELECT @@グローバル。 TIME_ZONE、@@ session.time_zone。
出典ます。https://blog.csdn.net/gmsGms_gms/article/details/80748208
ジャンゴタイムゾーンについて:
ノートのジャンゴドキュメント:タイムゾーンを使用する場合は、データベースに格納されているすべての日付と時刻の情報DjangoはタイムゾーンUTCにあるユーザーのタイムゾーンに変換Webページ上のフロントデスクのユーザーが、配置されている背景時々日時ゾーンに勝ちます。
すなわち:
ジャンゴあなたは内部DjangoのすべてのUTC時間として時間(北京時間はUTC + 8である)の治療を可能にするタイムゾーン機能を開いた場合。全て(例えば、データベースのMySQLに格納されている)ストレージと内部処理(バックグラウンドで様々な時間処理)、及びディスプレイの形態であっても、ダイレクトプリントが全てUTCです。
テンプレート入力時、時間が戻ってUTC時間にテンプレート出力時間(UTC背景全時間)アプリケーションサポートしない限り、時間のユーザの場所(に変換UTC時間に入るこのとき、ユーザーが自分のタイムゾーンを設定する場合は、通常我々は、テンプレートのタイムゾーンの問題を気にしない。ショータイムテンプレートがセットsettings.TIME_ZONEに使用されるときに、自動的にタイムゾーンsettings.TIME_ZONEの嘘をレンダリングUTC時刻時刻に変換されます。)
USE_TZ =真を有効にした後、2つの点を次のことを保証するために、処理時間の時:
- UTC時刻ことを保証するために、データベースに格納されています。
- 場合関数(バックグラウンド処理)がUTC時刻に変換されていることを確認するまでの間の経過時間パラメータ。
例えば、通常はAを使用して現在の時刻を取得
import datetime
now = datetime.datetime.now()
USE_TZ =真を有効にした後、必要が書き込まれます
import datetime
from django.utils.timezone import utc
utcnow = datetime.datetime.utcnow().replace(tzinfo=utc)
转自:https://www.cnblogs.com/ChangAn223/p/10928230.html
クエリの属性ジャンゴフィルター日付:年、月、日、WEEK_DAY、時、分、秒
プロジェクトレビューブログをやって、私は窓からLinuxプロジェクトに移動し、その後の記事は、月の結果に従ってフィルタリング作品は、空に常にあることをアーカイブするブログ。そして、ビットBaiduの、結果は問題領域です。
Djangoのsettings.py設定ファイルでは、そこに時間と時間帯に関連する2つの設定パラメータは今ある、とUSE_TZはTIME_ZONEです
デフォルト設定ジャンゴTIME_ZONEタイムゾーンアメリカ/シカゴ
別のタイムゾーンにTIME_ZONEセットが、その後の状況も指している場合:
- それはWindowsシステムの場合は、TIME_ZONEの設定は無用である、Djangoは機械の時間を使用します。
- このように設定USE_TZ = Falseの、TIME_ZONEなどの他のシステム、使用のゾーンの時間は、=「アジア/上海」、上海はUTC時間を使用している場合。
ジャンゴクエリのMySQLを使用して、データベースのORM文は時間帯機能USE_TZ =真に対処するための時間が来て、対応するには、このようなconvert_tz(時間伝達関数)などの機能を有効にすると、我々はプロジェクトDjangoの設定ファイルに設定され、地区TIME_ZONEの設定=「アジア/上海のが、MySQLは、正しい時刻アジア/上海を取得することはできませんので、MySQLの上海このタイムゾーンを知っているし、クエリが空のリストを返すときはありません。
最終的な解決策で初:
# 可以使用如下方式进行筛选,筛选的值格式和你DB中的格式对应,比如是2019/04/12还是2017-04-12
article_list = ArticleModel.objects.filter(status='p', add_time__startswith='2019-04-12').order_by('-add_time')
#如果只想根据年月来筛选就是
article_list = ArticleModel.objects.filter(status='p', add_time__startswith='20179-04').order_by('-add_time')
「2019から5」への必要性から、すなわち2019年5月には、0を追加するために、データベースの必要性に合わせて、月と10ヶ月未満「は2019から05」になることに注意してください
解決策1:
USE_TZ =偽:直接setting.pyファイルに
しかし、その後、あなたは、時間帯機能のジャンゴを使用することはできません。(8時間後にはほとんどの時間になり、データベースに格納されています)
解決策2:
2つのシステムが自然にこのファイルのタイムゾーンの変換が含まれていない示したように、それは、Windowsのタイムゾーンの変換をサポートしていません書かれたMySQLの公式ドキュメント:
リンクスであれば示すように、直接、次のコマンドを実行します。
Microsoft Windowsをお使いの場合:
あなたは、ファイルmysqlのゾーンをダウンロードするとします。https://dev.mysql.com/downloads/timezones.html
Cにコピー:\ \ \ MySQLサーバの\データmysqlディレクトリはProgramDataのMySQL 5.7 \
再起動MySQLの
ログmysqlの、実行:
SET TIME_ZONE GLOBAL = '上海のアジア/';
SET TIME_ZONE SESSION = '上海のアジア/';
SELECT @@グローバル。 TIME_ZONE、@@ session.time_zone。
来源:https://blog.csdn.net/gmsGms_gms/article/details/80748208
关于django中的时区:
django文档中有说明:当使用时区时,Django存储在数据库中的所有日期时间信息都以UTC时区为准,在后台使用有时区的datetime,前台用户使用时,在网页上翻译成用户所在的时区。
即:
Django 如果开启了 Time Zone 功能,即让 Django 内部把时间全部当成 UTC 时间(北京时间为 UTC+8 )对待。所有的存储(如存储到mysql数据库)和内部处理(在后台的各种时间处理),甚至包括直接 print 显示全都是 UTC 形式的。
这个时候,在通过模板输入时间时,会把输入的时间转换成UTC的时间,在通过模板输出时间的时候,回把UTC时间(后台都是UTC时间)转换成用户所在地的时间(除非应用支持用户设置自己所在的时区,通常我们不需要关心模板的时区问题。模板在展示时间的时候,会使用 settings.TIME_ZONE 中的设置自动把 UTC 时间转成 settings.TIME_ZONE 所在时区的时间渲染。)
启用 USE_TZ = True 后,在处理时间的时候要保证下面两点:
- 保证存储到数据库中的是 UTC 时间;
- 在函数之间传递时间参数时(后台处理)确保时间已经转换成 UTC 时间;
比如,通常获取当前时间用的是
import datetime
now = datetime.datetime.now()
启用 USE_TZ = True 后,需要写成
import datetime
from django.utils.timezone import utc
utcnow = datetime.datetime.utcnow().replace(tzinfo=utc)
转自:https://www.cnblogs.com/ChangAn223/p/10928230.html