{"title":"タイムゾーン","version":"1.10","locale":"ja","docname":"topics/i18n/timezones","url":"/ja/1.10/topics/i18n/timezones/","canonical":"https://djangodocs.dev/ja/1.10/topics/i18n/timezones/","summary":"オーバービュー Link to this heading # タイムゾーンのサポートが有効のとき、Django は内部的に aware なタイムゾーンオブジェクトを使用して、データベース内に UTC で日時の情報を保持します。そして、テンプレートやフォーム内でエンドユーザのタイムゾーンに変換します。…","html":"<h1>タイムゾーン<a class=\"heading-anchor\" href=\"#time-zones\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"overview\">\n<span id=\"time-zones-overview\"></span><h2>オーバービュー<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>タイムゾーンのサポートが有効のとき、Django は内部的に aware なタイムゾーンオブジェクトを使用して、データベース内に UTC で日時の情報を保持します。そして、テンプレートやフォーム内でエンドユーザのタイムゾーンに変換します。</p>\n<p>この機能は、ユーザが複数のタイムゾーンを使用しており、またユーザに対して彼らの時計と同じ日時を表示したいときに有用です。</p>\n<p>たとえウェブサイトが 1 つのタイムゾーンでしか使われないとしても、それでもデータベース内に UTC でデータを保持するのは良い実装方法です。主な理由は夏時間 (DST) です。多くの国では DST の制度を採用しており、時計は春に進んで秋に戻ります。もし現地時刻で運用していたら、この変換が起きる年に 2 回、エラーに遭遇することになるでしょう。(<a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> ドキュメントが この問題 を大変詳しく論じています。) これはブログにとっては重要な問題ではありませんが、年に 2 回請求金額が 1 時間分多くなったり少なくなったりするのは問題です。この問題の解決策は、コード内では UTC を使い、エンドユーザとやり取りするときだけ現地時刻を使用することです。</p>\n<p>タイムゾーンサポートは、デフォルトでは無効化されています。有効化するためには、設定ファイルで set <a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code></a> とセットしてください。<a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> をインストールすることが強く推奨されますが、特定のデータベースバックエンド、オペレーティングシステム、タイムゾーンによっては必ずしも必要ではありません。日付や時刻に対する問い合わせでエラーに遭遇した場合は、バグを疑う前に <a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> をインストールしてみてください。インストールは以下のようにシンプルです:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>pytz\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">django-admin</span> <span class=\"pre\">startproject</span></code></a> によって生成されるデフォルトの <code class=\"file docutils literal notranslate\"><span class=\"pre\">settings.py</span></code> ファイル は、利便性のために <a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code></a> を含んでいます。</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>ほかにも、独立はしていますが、関連する <a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_L10N\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_L10N</span></code></a> 設定もあります。これは、Django が表示形式のローカル化を有効にするかどうかをコントロールします。詳しくは <a class=\"reference internal\" href=\"/ja/1.10/topics/i18n/formatting/\"><span class=\"doc\">表示形式のローカル化</span></a> を参照してください。</p>\n</aside>\n<p>特定の問題と格闘している場合は、<a class=\"reference internal\" href=\"#time-zones-faq\"><span class=\"std std-ref\">time zone FAQ</span></a> を参照してください。</p>\n</section>\n<section id=\"concepts\">\n<h2>コンセプト<a class=\"heading-anchor\" href=\"#concepts\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"naive-and-aware-datetime-objects\">\n<span id=\"naive-vs-aware-datetimes\"></span><h3>native と aware の日時オブジェクト<a class=\"heading-anchor\" href=\"#naive-and-aware-datetime-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Python の <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code></a> のオブジェクトには、タイムゾーン情報を保持するために使える <code class=\"docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code> 属性があり、これは <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.tzinfo</span></code></a> のサブクラスのインスタンスで表されます。 この属性がセットされオフセットを示すとき、datetime オブジェクトは <strong>aware</strong> となります。それ以外の場合は <strong>naive</strong> となります。</p>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.is_aware\" title=\"django.utils.timezone.is_aware\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">is_aware()</span></code></a>  <a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.is_naive\" title=\"django.utils.timezone.is_naive\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">is_naive()</span></code></a> を使って、datatime を aware にするか native にするかを決めることもできます。</p>\n<p>タイムゾーンサポートが無効化されているときは、Django は現地時刻で native な datetime オブジェクトを使用します。これは、多くのケースでシンプルかつ十分です。このモードでは、現在時刻を取得するには以下のように記述します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n\n<span class=\"n\">now</span> <span class=\"o\">=</span> <span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>タイムゾーンサポートが有効化 (<a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ=True</span></code></a> ) されているときは、Django は タイムゾーンを認識する (awareな) datetime オブジェクトを使用します。コード内で datetime オブジェクトを作成した場合も、aware となります。このモードでは、上の例は以下のようになります:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timezone</span>\n\n<span class=\"n\">now</span> <span class=\"o\">=</span> <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">()</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>aware な datetime オブジェクトを扱うのは、直感的ではにことがあります。例えば、標準の datetime コンストラクタの <code class=\"docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code> 引数は、DST を伴うタイムゾーンでは正しく動作しません。UTC を使えば常に安全です; 他のタイムゾーンを使用している場合は、<a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> ドキュメントを熟読してください。</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>Python の <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.time\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.time</span></code></a> オブジェクトは、<code class=\"docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code> 属性を持ちます。また PostgreSQL には、これに相当する <code class=\"docutils literal notranslate\"><span class=\"pre\">time</span> <span class=\"pre\">with</span> <span class=\"pre\">time</span> <span class=\"pre\">zone</span></code> タイプがあります。ただし、PostgreSQL のドキュメントにあるとおり、このタイプは &quot;不確かな有用性に導く特性を示しています&quot;。</p>\n<p>Django は naive な time オブジェクトのみをサポートしており、aware な time オブジェクトを保存しようとすると例外を投げます。これは、日付を伴わない時刻に対するタイムゾーンには意味がないからです。</p>\n</aside>\n</section>\n<section id=\"interpretation-of-naive-datetime-objects\">\n<span id=\"naive-datetime-objects\"></span><h3>native な datetime オブジェクトの変換<a class=\"heading-anchor\" href=\"#interpretation-of-naive-datetime-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>後方互換性を維持するため、setting:USE_TZ が <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> のときでも、Django は naive な datetime オブジェクトを受け入れます。データベースレイヤがこれを受け取ったとき、<a class=\"reference internal\" href=\"#default-current-time-zone\"><span class=\"std std-ref\">default time zone</span></a> で変換して aware に直そうとし、警告を投げます。</p>\n<p>残念ながら、DST の移行の間、いくつかの datetimes は存在しないか不明瞭になります。このような状況では、<a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> は例外を投げます。たとえば <a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> がインストールされていない場合に備えたフォールバックとして使われるローカルタイムゾーンのような、他の <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a> の実装は、例外を投げるか不正確な結果を返す可能性があります。したがって、タイムゾーンサポートを有効化しているときには、常に aware な datetime オブジェクトを作成するべきなのです。</p>\n<p>実際には、これはめったに問題になりません。Django はモデルやーフォームでは aware な datetime オブジェクトを渡し、ほとんどの場合、新しい datetime オブジェクトは <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">timedelta</span></code></a> 計算を通じて他の日時から作成されます。唯一アプリケーションのコード内でよく作成される datetime は現在の時刻で、<a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.now\" title=\"django.utils.timezone.now\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">timezone.now()</span></code></a> は自動的に適切な処理を行います。</p>\n</section>\n<section id=\"default-time-zone-and-current-time-zone\">\n<span id=\"default-current-time-zone\"></span><h3>デフォルトタイムゾーンとカレントタイムゾーン<a class=\"heading-anchor\" href=\"#default-time-zone-and-current-time-zone\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><strong>デフォルトタイムゾーン</strong> は、<a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> 設定によって定義されるタイムゾーンです。</p>\n<p><strong>タイムゾーン</strong> は、レンダリングに使われるタイムゾーンです。</p>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.activate\" title=\"django.utils.timezone.activate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">activate()</span></code></a> を使って、エンドユーザの実際のタイムゾーンに対するカレントタイムゾーンをセットする必要があります。 そうしないと、デフォルトタイムゾーンが使用されます。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> のドキュメントで説明されているとおり、Django は環境変数をセットし、プロセスがデフォルトタイムゾーンで動くようにします。 これは、<a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> やカレントタイムゾーンの値にかかわらず発生します。</p>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> が <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> のとき、これは現地時刻に未だ依存しているアプリケーションでの後方互換性を維持するために役立ちます。ただし、<a class=\"reference internal\" href=\"#naive-datetime-objects\"><span class=\"std std-ref\">上記で説明したとおり</span></a>、これは完全には信用できません。そして、常に コード内では UTC で aware な datetimes を扱う必要があります。、<a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime.fromtimestamp\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">fromtimestamp()</span></code></a> を使って、<code class=\"docutils literal notranslate\"><span class=\"pre\">tz</span></code> パラメータを <a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.utc\" title=\"django.utils.timezone.utc\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">utc</span></code></a> にセットしてください。</p>\n</aside>\n</section>\n<section id=\"selecting-the-current-time-zone\">\n<h3>カレントタイムゾーンを選択する<a class=\"heading-anchor\" href=\"#selecting-the-current-time-zone\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>カレントタイムゾーンは、翻訳に対する <a class=\"reference internal\" href=\"/ja/1.10/topics/i18n/#term-locale-name\"><span class=\"xref std std-term\">locale</span></a> に相当します。ただし、Django がユーザのタイムゾーンを自動的に決めるために使える <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept-Language</span></code> HTTP ヘッダに相当するものはありません。代わりに、Django は <a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#time-zone-selection-functions\"><span class=\"std std-ref\">タイムゾーン選択関数</span></a> を提供しています。これらを使って、あなたにとって有用なタイムゾーン選択ロジックを組み立ててください。</p>\n<p>タイムゾーンを扱うほとんどのウェブサイトは、ユーザにどのタイムゾーンに住んでいるかを尋ねて、その情報をユーザのプロフィールに保存します。匿名ユーザに対しては、ウェブサイトが優先する訪問者のタイムゾーンか UTC を使います。<a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> には、国ごとのタイムゾーンのリストのようなヘルパーがあり、最も可能性の高いタイムゾーンを事前選択するために使うことができます。</p>\n<p>以下は、セッション内にカレントタイムゾーンを保持する例です。(シンプルにするため、全体的にエラー処理を省略しています。)</p>\n<p>以下のミドルウェアを <a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> に追加します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">pytz</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timezone</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.deprecation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">MiddlewareMixin</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">TimezoneMiddleware</span><span class=\"p\">(</span><span class=\"n\">MiddlewareMixin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">process_request</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"n\">tzname</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">session</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s1\">&#39;django_timezone&#39;</span><span class=\"p\">)</span>\n        <span class=\"k\">if</span> <span class=\"n\">tzname</span><span class=\"p\">:</span>\n            <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">activate</span><span class=\"p\">(</span><span class=\"n\">pytz</span><span class=\"o\">.</span><span class=\"n\">timezone</span><span class=\"p\">(</span><span class=\"n\">tzname</span><span class=\"p\">))</span>\n        <span class=\"k\">else</span><span class=\"p\">:</span>\n            <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">deactivate</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>カレントタイムゾーンをセットできるビューを作成します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">redirect</span><span class=\"p\">,</span> <span class=\"n\">render</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">set_timezone</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">method</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;POST&#39;</span><span class=\"p\">:</span>\n        <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">session</span><span class=\"p\">[</span><span class=\"s1\">&#39;django_timezone&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">POST</span><span class=\"p\">[</span><span class=\"s1\">&#39;timezone&#39;</span><span class=\"p\">]</span>\n        <span class=\"k\">return</span> <span class=\"n\">redirect</span><span class=\"p\">(</span><span class=\"s1\">&#39;/&#39;</span><span class=\"p\">)</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        <span class=\"k\">return</span> <span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s1\">&#39;template.html&#39;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s1\">&#39;timezones&#39;</span><span class=\"p\">:</span> <span class=\"n\">pytz</span><span class=\"o\">.</span><span class=\"n\">common_timezones</span><span class=\"p\">})</span>\n</code></pre></div>\n<p>このビューに <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code> するフォームを <code class=\"docutils literal notranslate\"><span class=\"pre\">template.html</span></code> に入れます:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">tz</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">get_current_timezone</span> <span class=\"k\">as</span> <span class=\"nv\">TIME_ZONE</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">action</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;set_timezone&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;POST&quot;</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">csrf_token</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;timezone&quot;</span><span class=\"p\">&gt;</span>Time zone:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">select</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;timezone&quot;</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">tz</span> <span class=\"k\">in</span> <span class=\"nv\">timezones</span> <span class=\"cp\">%}</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">option</span> <span class=\"na\">value</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">tz</span> <span class=\"cp\">}}</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">tz</span> <span class=\"o\">==</span> <span class=\"nv\">TIME_ZONE</span> <span class=\"cp\">%}</span> <span class=\"na\">selected</span><span class=\"o\">=</span><span class=\"s\">&quot;selected&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">tz</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">option</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">select</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;submit&quot;</span> <span class=\"na\">value</span><span class=\"o\">=</span><span class=\"s\">&quot;Set&quot;</span> <span class=\"p\">/&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">form</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"time-zone-aware-input-in-forms\">\n<span id=\"time-zones-in-forms\"></span><h2>フォームでのタイムゾーン aware な入力<a class=\"heading-anchor\" href=\"#time-zone-aware-input-in-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>タイムゾーンサポートを有効にしたとき、Django はフォーム内に入力された日時を <a class=\"reference internal\" href=\"#default-current-time-zone\"><span class=\"std std-ref\">カレントタイムゾーン</span></a> で変換し、<code class=\"docutils literal notranslate\"><span class=\"pre\">cleaned_data</span></code> 内で aware な datetime オブジェクトを返します。</p>\n<p>カレントタイムゾーンが、(<a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> によるタイムゾーンが行う) DST 変換でうまくいかなかったために、存在しなかったり曖昧な日時に対して例外を投げた場合、この日時は無効な値としてレポートされます。</p>\n</section>\n<section id=\"time-zone-aware-output-in-templates\">\n<span id=\"time-zones-in-templates\"></span><h2>テンプレートでのタイムゾーン aware な出力<a class=\"heading-anchor\" href=\"#time-zone-aware-output-in-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>タイムゾーンサポートを有効にしているとき、Django はテンプレートでレンダリングする際に aware な datetime オブジェクトを <a class=\"reference internal\" href=\"#default-current-time-zone\"><span class=\"std std-ref\">カレントタイムゾーン</span></a> に連関します。この動作は、 <a class=\"reference internal\" href=\"/ja/1.10/topics/i18n/formatting/\"><span class=\"doc\">表示形式のローカル化</span></a> と非常によく似ています。</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>Django は naive な日時オブジェクトは転換しません。これは、曖昧であることと、タイムゾーンサポートが有効化されているときは naive な日時を生成するべきではないからです。ただし、後述するテンプレートフィルタを使って強制的に転換させることができます。</p>\n</aside>\n<p>現地時刻への転換は、適切ではないことがあります -- 人手はなくコンピュータに対してアウトプットを生成するときなどです。以下のフィルタやタグ (<code class=\"docutils literal notranslate\"><span class=\"pre\">tz</span></code> テンプレートタグライブラリによって提供されています) で、タイムゾーンの転換をコントロールできます。</p>\n<section id=\"template-tags\">\n<h3>テンプレートタグ<a class=\"heading-anchor\" href=\"#template-tags\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"localtime\">\n<span id=\"std-templatetag-localtime\"></span><h4><code class=\"docutils literal notranslate\"><span class=\"pre\">localtime</span></code><a class=\"heading-anchor\" href=\"#localtime\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>ブロック内で、aware な datetime オブジェクトのカレントライムゾーンへの転換を有効化または無効化します。</p>\n<p>このタグは、テンプレートエンジンに関する限り、<a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> 設定とまったく同じ効果を持ちます。これを使うと、より細かい粒度の転換をコントロールできます。</p>\n<p>テンプレートブロックに対して転換を有効化ないし無効化するには、以下を使ってください:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">tz</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">localtime</span> <span class=\"nv\">on</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">value</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endlocaltime</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">localtime</span> <span class=\"nv\">off</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">value</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endlocaltime</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> の値は、<code class=\"docutils literal notranslate\"><span class=\"pre\">{%</span> <span class=\"pre\">localtime</span> <span class=\"pre\">%}</span></code> ブロックの中では尊重されません。</p>\n</aside>\n</section>\n<section id=\"timezone\">\n<span id=\"std-templatetag-timezone\"></span><h4><code class=\"docutils literal notranslate\"><span class=\"pre\">timezone</span></code><a class=\"heading-anchor\" href=\"#timezone\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>ブロック内でカレントタイムゾーンをセットまたは解除します。カレントタイムゾーンがセットされていないときは、デフォルトタイムゾーンが適用されます。</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">tz</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">timezone</span> <span class=\"s2\">&quot;Europe/Paris&quot;</span> <span class=\"cp\">%}</span>\n    Paris time: <span class=\"cp\">{{</span> <span class=\"nv\">value</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endtimezone</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">timezone</span> <span class=\"kp\">None</span> <span class=\"cp\">%}</span>\n    Server time: <span class=\"cp\">{{</span> <span class=\"nv\">value</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endtimezone</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"get-current-timezone\">\n<span id=\"std-templatetag-get_current_timezone\"></span><h4><code class=\"docutils literal notranslate\"><span class=\"pre\">get_current_timezone</span></code><a class=\"heading-anchor\" href=\"#get-current-timezone\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_current_timezone</span></code> タグを使って、カレントタイムゾーンの名前を取得することができます:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">get_current_timezone</span> <span class=\"k\">as</span> <span class=\"nv\">TIME_ZONE</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>これ以外に、<a class=\"reference internal\" href=\"/ja/1.10/ref/templates/api/#django.template.context_processors.tz\" title=\"django.template.context_processors.tz\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">tz()</span></code></a> コンテキストプロセッサを有効化して <code class=\"docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code> コンテキスト変数を使うことができます。</p>\n</section>\n</section>\n<section id=\"template-filters\">\n<h3>テンプレートフィルタ<a class=\"heading-anchor\" href=\"#template-filters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>以下のフィルタは、aware と native の日時の両表を受け入れます。転換するために、これらは native な日時はデフォルトタイムゾーンにあると仮定します。これらは常に aware な日時を返します。</p>\n<section id=\"std-templatefilter-localtime\">\n<span id=\"id1\"></span><h4><code class=\"docutils literal notranslate\"><span class=\"pre\">localtime</span></code><a class=\"heading-anchor\" href=\"#std-templatefilter-localtime\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>単一の値からカレントタイムゾーンへの変換を強制します。</p>\n<p>For example:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">tz</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">localtime</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</section>\n<section id=\"utc\">\n<span id=\"std-templatefilter-utc\"></span><h4><code class=\"docutils literal notranslate\"><span class=\"pre\">utc</span></code><a class=\"heading-anchor\" href=\"#utc\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>単一の値から UTC への転換を強制します。</p>\n<p>For example:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">tz</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">utc</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</section>\n<section id=\"std-templatefilter-timezone\">\n<span id=\"id2\"></span><h4><code class=\"docutils literal notranslate\"><span class=\"pre\">timezone</span></code><a class=\"heading-anchor\" href=\"#std-templatefilter-timezone\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>単一の値から指定したタイムゾーンへの転換を強制します。</p>\n<p>属性は <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a> サブクラスのインスタンスかタイムゾーン名である必要があります。タイムゾーン名の場合は、<a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> が必要です。</p>\n<p>For example:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">tz</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">timezone</span><span class=\"s2\">:&quot;Europe/Paris&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</section>\n</section>\n</section>\n<section id=\"migration-guide\">\n<span id=\"time-zones-migration-guide\"></span><h2>移行ガイド<a class=\"heading-anchor\" href=\"#migration-guide\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>以下は、Django がタイムゾーンをサポートする以前に開始したプロジェクトを移行する方法です。</p>\n<section id=\"database\">\n<h3>データベース<a class=\"heading-anchor\" href=\"#database\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"postgresql\">\n<h4>PostgreSQL<a class=\"heading-anchor\" href=\"#postgresql\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>The PostgreSQL backend stores datetimes as <code class=\"docutils literal notranslate\"><span class=\"pre\">timestamp</span> <span class=\"pre\">with</span> <span class=\"pre\">time</span> <span class=\"pre\">zone</span></code>. In\npractice, this means it converts datetimes from the connection's time zone to\nUTC on storage, and from UTC to the connection's time zone on retrieval.</p>\n<p>As a consequence, if you're using PostgreSQL, you can switch between <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span>\n<span class=\"pre\">=</span> <span class=\"pre\">False</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code> freely. The database connection's time zone\nwill be set to <a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> or <code class=\"docutils literal notranslate\"><span class=\"pre\">UTC</span></code> respectively, so that Django\nobtains correct datetimes in all cases. You don't need to perform any data\nconversions.</p>\n</section>\n<section id=\"other-databases\">\n<h4>他のデータベース<a class=\"heading-anchor\" href=\"#other-databases\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>他のバックエンドは、タイムゾーン情報なしで日時を保持します。<code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code> から <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code> に切り替えた場合、現地時刻から UTC に転換する必要があります -- あなたの現地時刻に DST がある場合、これは確実に 1 つに決まるわけではありません。</p>\n</section>\n</section>\n<section id=\"code\">\n<h3>コード<a class=\"heading-anchor\" href=\"#code\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>最初のステップは、設定ファイルに <a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code></a> を加えて (可能ならば) <a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> をインストールすることです。 この時点では、ほとんどのことは動作します。コード内で naive な datetime オブジェクトを作成した場合、Django は必要に応じてこれらを aware に変更します。</p>\n<p>ただし、これらの変換ではDSTの移行が失敗する可能性があります。これは、まだ対ー無ゾーンサポートの利点が完全には得られていないことを意味します。 また、naive な日時と aware な日時を比較することは不可能なため、いくつかの問題に遭遇する可能性があります。 Django はaware な日時を提供するので、モデルやフォームから来た datetime と、コード内に作成した naive な datetime を比較すると例外が発生します。</p>\n<p>したがって、第2のステップは、datetime オブジェクトをインスタンス化している部分を aware に変更するため、コードをリファクタリングすることです。 これは段階的に行うことができます。<a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#module-django.utils.timezone\" title=\"django.utils.timezone: Timezone support.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.utils.timezone</span></code></a> は、互換性のための便利なヘルパーをいくつ定義しています <a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.now\" title=\"django.utils.timezone.now\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">now()</span></code></a>、<a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.is_aware\" title=\"django.utils.timezone.is_aware\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">is_aware()</span></code></a>、<a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.is_naive\" title=\"django.utils.timezone.is_naive\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">is_naive()</span></code></a>、<a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.make_aware\" title=\"django.utils.timezone.make_aware\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">make_aware()</span></code></a> そして <a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.make_naive\" title=\"django.utils.timezone.make_naive\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">make_naive()</span></code></a> です。</p>\n<p>最後に、アップグレードが必要なコードを特定しやすいように、naive な日時をデータベースに保存しようとすると、Django は警告を出します:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"ne\">RuntimeWarning</span><span class=\"p\">:</span> <span class=\"n\">DateTimeField</span> <span class=\"n\">ModelName</span><span class=\"o\">.</span><span class=\"n\">field_name</span> <span class=\"n\">received</span> <span class=\"n\">a</span> <span class=\"n\">naive</span>\n<span class=\"n\">datetime</span> <span class=\"p\">(</span><span class=\"mi\">2012</span><span class=\"o\">-</span><span class=\"mi\">01</span><span class=\"o\">-</span><span class=\"mi\">01</span> <span class=\"mi\">00</span><span class=\"p\">:</span><span class=\"mi\">00</span><span class=\"p\">:</span><span class=\"mi\">00</span><span class=\"p\">)</span> <span class=\"k\">while</span> <span class=\"n\">time</span> <span class=\"n\">zone</span> <span class=\"n\">support</span> <span class=\"ow\">is</span> <span class=\"n\">active</span><span class=\"o\">.</span>\n</code></pre></div>\n<p>開発中、以下を設定ファイルに追加することで、これらの警告を例外として発生するように変更し、トラックバックを得ることができます:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">warnings</span>\n<span class=\"n\">warnings</span><span class=\"o\">.</span><span class=\"n\">filterwarnings</span><span class=\"p\">(</span>\n    <span class=\"s1\">&#39;error&#39;</span><span class=\"p\">,</span> <span class=\"sa\">r</span><span class=\"s2\">&quot;DateTimeField .* received a naive datetime&quot;</span><span class=\"p\">,</span>\n    <span class=\"ne\">RuntimeWarning</span><span class=\"p\">,</span> <span class=\"sa\">r</span><span class=\"s1\">&#39;django\\.db\\.models\\.fields&#39;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"fixtures\">\n<h3>フィクスチャー<a class=\"heading-anchor\" href=\"#fixtures\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>aware な日時をシリアライズするとき、以下のように UTC オフセットが含まれます:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"s2\">&quot;2011-09-01T13:20:30+03:00&quot;</span>\n</code></pre></div>\n<p>naive な日時に対しては、当然ながら含まれません:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"s2\">&quot;2011-09-01T13:20:30&quot;</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/models/fields/#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code></a> を使ったモデルに対しては、この違いにより、タイムゾーンサポートのありとなし両方に対して動作するフィクスチャーを記述することができません。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code> もしくは Django 1.4 以前 で生成されたフィクスチャーは、&quot;naive&quot; 形式を使用します。このようなフィクス茶がプロジェクトに含まれる場合、タイムゾーンサポートを有効化した後に、これらをロードする際に <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#RuntimeWarning\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">RuntimeWarning</span></code></a> を参照してください。警告を破棄するには、これらのフィクスチャーを &quot;aware&quot; 形式に転換する必要があります。</p>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/django-admin/#django-admin-loaddata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">loaddata</span></code></a> と <a class=\"reference internal\" href=\"/ja/1.10/ref/django-admin/#django-admin-dumpdata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">dumpdata</span></code></a> を使って、フィクスチャーを際生成できます。もしくは、これらが十分小さい場合には、<a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> がシリアライズされたそれぞれの日時と一致する UTC オフセットをこれらに単に追加できます。</p>\n</section>\n</section>\n<section id=\"faq\">\n<span id=\"time-zones-faq\"></span><h2>FAQ<a class=\"heading-anchor\" href=\"#faq\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"setup\">\n<h3>セットアップ<a class=\"heading-anchor\" href=\"#setup\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic\">\n<li><p><strong>複数のタイムゾーンを必要としません。タイムゾーンサポートを有効化するべきですか？</strong></p>\n<p>はい。タイムゾーンサポートが有効のとき、Django は現地時刻のより正確なモデルを使用します。これは、夏時間 (DST) 変換まわりの微細で再現不可能なバグからあなたを守ります。</p>\n<p>In this regard, time zones are comparable to <code class=\"docutils literal notranslate\"><span class=\"pre\">unicode</span></code> in Python. At first\nit's hard. You get encoding and decoding errors. Then you learn the rules.\nAnd some problems disappear -- you never get mangled output again when your\napplication receives non-ASCII input.</p>\n<p>When you enable time zone support, you'll encounter some errors because\nyou're using naive datetimes where Django expects aware datetimes. Such\nerrors show up when running tests and they're easy to fix. You'll quickly\nlearn how to avoid invalid operations.</p>\n<p>On the other hand, bugs caused by the lack of time zone support are much\nharder to prevent, diagnose and fix. Anything that involves scheduled tasks\nor datetime arithmetic is a candidate for subtle bugs that will bite you\nonly once or twice a year.</p>\n<p>For these reasons, time zone support is enabled by default in new projects,\nand you should keep it unless you have a very good reason not to.</p>\n</li>\n<li><p><strong>タイムゾーンサポートを有効化しました。私は安全ですか？</strong></p>\n<p>おそらく。DST 関連のバグからは守られるようになりましたが、それでも不用意な変換 ( naive な日時を aware な日時に変更する、およびその逆）ことによって自ら墓穴を掘る可能性があります。</p>\n<p>If your application connects to other systems -- for instance, if it queries\na Web service -- make sure datetimes are properly specified. To transmit\ndatetimes safely, their representation should include the UTC offset, or\ntheir values should be in UTC (or both!).</p>\n<p>Finally, our calendar system contains interesting traps for computers:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">one_year_before</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">):</span>       <span class=\"c1\"># DON&#39;T DO THAT!</span>\n<span class=\"gp\">... </span>    <span class=\"k\">return</span> <span class=\"n\">value</span><span class=\"o\">.</span><span class=\"n\">replace</span><span class=\"p\">(</span><span class=\"n\">year</span><span class=\"o\">=</span><span class=\"n\">value</span><span class=\"o\">.</span><span class=\"n\">year</span> <span class=\"o\">-</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">one_year_before</span><span class=\"p\">(</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"p\">(</span><span class=\"mi\">2012</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">))</span>\n<span class=\"go\">datetime.datetime(2011, 3, 1, 10, 0)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">one_year_before</span><span class=\"p\">(</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"p\">(</span><span class=\"mi\">2012</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">29</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">))</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"c\">...</span>\n<span class=\"gr\">ValueError</span>: <span class=\"n\">day is out of range for month</span>\n</code></pre></div>\n<p>(To implement this function, you must decide whether 2012-02-29 minus\none year is 2011-02-28 or 2011-03-01, which depends on your business\nrequirements.)</p>\n</li>\n<li><p><strong>pytz をインストールするべきですか？</strong></p>\n<p>はい。Django は外部依存を要求としないことをポリシーとしており、この理由のために <a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> は任意となっています。しかし、インストールすると非常に安全となります。</p>\n<p>As soon as you activate time zone support, Django needs a definition of the\ndefault time zone. When pytz is available, Django loads this definition\nfrom the <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/Tz_database\">tz database</a>. This is the most accurate solution. Otherwise, it\nrelies on the difference between local time and UTC, as reported by the\noperating system, to compute conversions. This is less reliable, especially\naround DST transitions.</p>\n<p>Furthermore, if you want to support users in more than one time zone, pytz\nis the reference for time zone definitions.</p>\n</li>\n<li><p><strong>現地時刻で日時を保持しているデータベースと、どのようにやり取りすればいいですか？</strong></p>\n<p><a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-DATABASE-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> オプションを、<a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DATABASES</span></code></a> 設定内のデータベースに適したタイムゾーンにセットしてください。</p>\n<p>This is useful for connecting to a database that doesn't support time zones\nand that isn't managed by Django when <a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> is <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</li>\n</ol>\n</section>\n<section id=\"troubleshooting\">\n<h3>トラブルシューティング<a class=\"heading-anchor\" href=\"#troubleshooting\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic\">\n<li><p><strong>私のアプリケーションが</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">TypeError:</span> <span class=\"pre\">can't</span> <span class=\"pre\">compare</span> <span class=\"pre\">offset-naive</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">and</span> <span class=\"pre\">offset-aware</span> <span class=\"pre\">datetimes</span></code> <strong>とともにクラッシュします -- 何がいけませんか？</strong></p>\n<p>naive と aware な日時を比較することによって、このエラーを再現してみましょう:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timezone</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">naive</span> <span class=\"o\">=</span> <span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">utcnow</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">aware</span> <span class=\"o\">=</span> <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">naive</span> <span class=\"o\">==</span> <span class=\"n\">aware</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"c\">...</span>\n<span class=\"gr\">TypeError</span>: <span class=\"n\">can&#39;t compare offset-naive and offset-aware datetimes</span>\n</code></pre></div>\n<p>このエラーに遭遇した場合、あなたのコードはこれら 2 つを比較している可能性が高いです:</p>\n<ul class=\"simple\">\n<li><p>a datetime provided by Django -- for instance, a value read from a form or\na model field. Since you enabled time zone support, it's aware.</p></li>\n<li><p>a datetime generated by your code, which is naive (or you wouldn't be\nreading this).</p></li>\n</ul>\n<p>Generally, the correct solution is to change your code to use an aware\ndatetime instead.</p>\n<p>If you're writing a pluggable application that's expected to work\nindependently of the value of <a class=\"reference internal\" href=\"/ja/1.10/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a>, you may find\n<a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.now\" title=\"django.utils.timezone.now\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.utils.timezone.now()</span></code></a> useful. This function returns the current\ndate and time as a naive datetime when <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code> and as an aware\ndatetime when <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code>. You can add or subtract\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.timedelta</span></code></a> as needed.</p>\n</li>\n<li><p><strong>多くの</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">RuntimeWarning:</span> <span class=\"pre\">DateTimeField</span> <span class=\"pre\">received</span> <span class=\"pre\">a</span> <span class=\"pre\">naive</span> <span class=\"pre\">datetime</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">(YYYY-MM-DD</span> <span class=\"pre\">HH:MM:SS)</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">while</span> <span class=\"pre\">time</span> <span class=\"pre\">zone</span> <span class=\"pre\">support</span> <span class=\"pre\">is</span> <span class=\"pre\">active</span></code> <strong>が発生します。 -- これは悪いことですか？</strong></p>\n<p>When time zone support is enabled, the database layer expects to receive\nonly aware datetimes from your code. This warning occurs when it receives a\nnaive datetime. This indicates that you haven't finished porting your code\nfor time zone support. Please refer to the <a class=\"reference internal\" href=\"#time-zones-migration-guide\"><span class=\"std std-ref\">migration guide</span></a> for tips on this process.</p>\n<p>In the meantime, for backwards compatibility, the datetime is considered to\nbe in the default time zone, which is generally what you expect.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">now.date()</span></code> <strong>が昨日 (もしくは明日) になります！</strong></p>\n<p>If you've always used naive datetimes, you probably believe that you can\nconvert a datetime to a date by calling its <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime.date\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">date()</span></code></a>\nmethod. You also consider that a <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.date\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">date</span></code></a> is a lot like a\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>, except that it's less accurate.</p>\n<p>None of this is true in a time zone aware environment:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">pytz</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">paris_tz</span> <span class=\"o\">=</span> <span class=\"n\">pytz</span><span class=\"o\">.</span><span class=\"n\">timezone</span><span class=\"p\">(</span><span class=\"s2\">&quot;Europe/Paris&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">new_york_tz</span> <span class=\"o\">=</span> <span class=\"n\">pytz</span><span class=\"o\">.</span><span class=\"n\">timezone</span><span class=\"p\">(</span><span class=\"s2\">&quot;America/New_York&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">paris</span> <span class=\"o\">=</span> <span class=\"n\">paris_tz</span><span class=\"o\">.</span><span class=\"n\">localize</span><span class=\"p\">(</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"p\">(</span><span class=\"mi\">2012</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">))</span>\n<span class=\"go\"># This is the correct way to convert between time zones with pytz.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">new_york</span> <span class=\"o\">=</span> <span class=\"n\">new_york_tz</span><span class=\"o\">.</span><span class=\"n\">normalize</span><span class=\"p\">(</span><span class=\"n\">paris</span><span class=\"o\">.</span><span class=\"n\">astimezone</span><span class=\"p\">(</span><span class=\"n\">new_york_tz</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">paris</span> <span class=\"o\">==</span> <span class=\"n\">new_york</span><span class=\"p\">,</span> <span class=\"n\">paris</span><span class=\"o\">.</span><span class=\"n\">date</span><span class=\"p\">()</span> <span class=\"o\">==</span> <span class=\"n\">new_york</span><span class=\"o\">.</span><span class=\"n\">date</span><span class=\"p\">()</span>\n<span class=\"go\">(True, False)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">paris</span> <span class=\"o\">-</span> <span class=\"n\">new_york</span><span class=\"p\">,</span> <span class=\"n\">paris</span><span class=\"o\">.</span><span class=\"n\">date</span><span class=\"p\">()</span> <span class=\"o\">-</span> <span class=\"n\">new_york</span><span class=\"o\">.</span><span class=\"n\">date</span><span class=\"p\">()</span>\n<span class=\"go\">(datetime.timedelta(0), datetime.timedelta(1))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">paris</span>\n<span class=\"go\">datetime.datetime(2012, 3, 3, 1, 30, tzinfo=&lt;DstTzInfo &#39;Europe/Paris&#39; CET+1:00:00 STD&gt;)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">new_york</span>\n<span class=\"go\">datetime.datetime(2012, 3, 2, 19, 30, tzinfo=&lt;DstTzInfo &#39;America/New_York&#39; EST-1 day, 19:00:00 STD&gt;)</span>\n</code></pre></div>\n<p>As this example shows, the same datetime has a different date, depending on\nthe time zone in which it is represented. But the real problem is more\nfundamental.</p>\n<p>A datetime represents a <strong>point in time</strong>. It's absolute: it doesn't depend\non anything. On the contrary, a date is a <strong>calendaring concept</strong>. It's a\nperiod of time whose bounds depend on the time zone in which the date is\nconsidered. As you can see, these two concepts are fundamentally different,\nand converting a datetime to a date isn't a deterministic operation.</p>\n<p>What does this mean in practice?</p>\n<p>Generally, you should avoid converting a <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a> to\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.date\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">date</span></code></a>. For instance, you can use the <a class=\"reference internal\" href=\"/ja/1.10/ref/templates/builtins/#std-templatefilter-date\"><code class=\"xref std std-tfilter docutils literal notranslate\"><span class=\"pre\">date</span></code></a>\ntemplate filter to only show the date part of a datetime. This filter will\nconvert the datetime into the current time zone before formatting it,\nensuring the results appear correctly.</p>\n<p>If you really need to do the conversion yourself, you must ensure the\ndatetime is converted to the appropriate time zone first. Usually, this\nwill be the current timezone:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timezone</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">activate</span><span class=\"p\">(</span><span class=\"n\">pytz</span><span class=\"o\">.</span><span class=\"n\">timezone</span><span class=\"p\">(</span><span class=\"s2\">&quot;Asia/Singapore&quot;</span><span class=\"p\">))</span>\n<span class=\"go\"># For this example, we just set the time zone to Singapore, but here&#39;s how</span>\n<span class=\"go\"># you would obtain the current time zone in the general case.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">current_tz</span> <span class=\"o\">=</span> <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">get_current_timezone</span><span class=\"p\">()</span>\n<span class=\"go\"># Again, this is the correct way to convert between time zones with pytz.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">local</span> <span class=\"o\">=</span> <span class=\"n\">current_tz</span><span class=\"o\">.</span><span class=\"n\">normalize</span><span class=\"p\">(</span><span class=\"n\">paris</span><span class=\"o\">.</span><span class=\"n\">astimezone</span><span class=\"p\">(</span><span class=\"n\">current_tz</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">local</span>\n<span class=\"go\">datetime.datetime(2012, 3, 3, 8, 30, tzinfo=&lt;DstTzInfo &#39;Asia/Singapore&#39; SGT+8:00:00 STD&gt;)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">local</span><span class=\"o\">.</span><span class=\"n\">date</span><span class=\"p\">()</span>\n<span class=\"go\">datetime.date(2012, 3, 3)</span>\n</code></pre></div>\n</li>\n<li><p><strong>エラー</strong> &quot;<code class=\"docutils literal notranslate\"><span class=\"pre\">Are</span> <span class=\"pre\">time</span> <span class=\"pre\">zone</span> <span class=\"pre\">definitions</span> <span class=\"pre\">for</span> <span class=\"pre\">your</span> <span class=\"pre\">database</span> <span class=\"pre\">and</span> <span class=\"pre\">pytz</span> <span class=\"pre\">installed?</span></code>&quot; <strong>が発生します。pytz はインストールされているので、データベースが問題だと推測するのですが？</strong></p>\n<p>If you are using MySQL, see the <a class=\"reference internal\" href=\"/ja/1.10/ref/databases/#mysql-time-zone-definitions\"><span class=\"std std-ref\">Time zone definitions</span></a> section\nof the MySQL notes for instructions on loading time zone definitions.</p>\n</li>\n</ol>\n</section>\n<section id=\"usage\">\n<h3>使い方<a class=\"heading-anchor\" href=\"#usage\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic\">\n<li><p><strong>文字列</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;2012-02-21</span> <span class=\"pre\">10:28:45&quot;</span></code> <strong>があり、</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;Europe/Helsinki&quot;</span></code> <strong>タイムゾーンであることが分かっています。どうやって aware な日時に変換しますか？</strong></p>\n<p>これは、まさに <a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> が存在する理由です。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.dateparse</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">parse_datetime</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">naive</span> <span class=\"o\">=</span> <span class=\"n\">parse_datetime</span><span class=\"p\">(</span><span class=\"s2\">&quot;2012-02-21 10:28:45&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">pytz</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pytz</span><span class=\"o\">.</span><span class=\"n\">timezone</span><span class=\"p\">(</span><span class=\"s2\">&quot;Europe/Helsinki&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">localize</span><span class=\"p\">(</span><span class=\"n\">naive</span><span class=\"p\">,</span> <span class=\"n\">is_dst</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n<span class=\"go\">datetime.datetime(2012, 2, 21, 10, 28, 45, tzinfo=&lt;DstTzInfo &#39;Europe/Helsinki&#39; EET+2:00:00 STD&gt;)</span>\n</code></pre></div>\n<p>Note that <code class=\"docutils literal notranslate\"><span class=\"pre\">localize</span></code> is a pytz extension to the <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a>\nAPI. Also, you may want to catch <code class=\"docutils literal notranslate\"><span class=\"pre\">pytz.InvalidTimeError</span></code>. The\ndocumentation of pytz contains <a class=\"reference external\" href=\"http://pytz.sourceforge.net/#example-usage\">more examples</a>. You should review it\nbefore attempting to manipulate aware datetimes.</p>\n</li>\n<li><p><strong>どうやってカレントタイムゾーンで現在時刻を取得しますか？</strong></p>\n<p>そうですね。最初に質問させてください。それは本当に必要ですか？</p>\n<p>人間とやり取りするときだけ、現地時刻を使うべきです。そして、テンプレートレイヤは日時をあなたが選択したタイムゾーンに転換するための <a class=\"reference internal\" href=\"#time-zones-in-templates\"><span class=\"std std-ref\">フィルタとタグ</span></a> タグを提供しています。</p>\n<p>Furthermore, Python knows how to compare aware datetimes, taking into\naccount UTC offsets when necessary. It's much easier (and possibly faster)\nto write all your model and view code in UTC. So, in most circumstances,\nthe datetime in UTC returned by <a class=\"reference internal\" href=\"/ja/1.10/ref/utils/#django.utils.timezone.now\" title=\"django.utils.timezone.now\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.utils.timezone.now()</span></code></a> will be\nsufficient.</p>\n<p>For the sake of completeness, though, if you really want the local time\nin the current time zone, here's how you can obtain it:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timezone</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">localtime</span><span class=\"p\">(</span><span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">())</span>\n<span class=\"go\">datetime.datetime(2012, 3, 3, 20, 10, 53, 873365, tzinfo=&lt;DstTzInfo &#39;Europe/Paris&#39; CET+1:00:00 STD&gt;)</span>\n</code></pre></div>\n<p>この例では、<a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> がインストールされていて、カレントタイムゾーンは <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;Europe/Paris&quot;</span></code> です。</p>\n</li>\n<li><p><strong>全ての利用可能なタイムゾーンを参照するにはどうすればいいですか？</strong></p>\n<p><a class=\"reference external\" href=\"http://pytz.sourceforge.net/\">pytz</a> はヘルパーを提供しており、これはカレントタイムゾーンのリストと全ての利用可能なタイムゾーンのリストを含んでいます -- そのうちのいくつかは単に歴史的な関連です。</p>\n</li>\n</ol>\n</section>\n</section>","rootId":"time-zones","toc":[{"title":"オーバービュー","anchor":"overview","children":[]},{"title":"コンセプト","anchor":"concepts","children":[{"title":"native と aware の日時オブジェクト","anchor":"naive-and-aware-datetime-objects","children":[]},{"title":"native な datetime オブジェクトの変換","anchor":"interpretation-of-naive-datetime-objects","children":[]},{"title":"デフォルトタイムゾーンとカレントタイムゾーン","anchor":"default-time-zone-and-current-time-zone","children":[]},{"title":"カレントタイムゾーンを選択する","anchor":"selecting-the-current-time-zone","children":[]}]},{"title":"フォームでのタイムゾーン aware な入力","anchor":"time-zone-aware-input-in-forms","children":[]},{"title":"テンプレートでのタイムゾーン aware な出力","anchor":"time-zone-aware-output-in-templates","children":[{"title":"テンプレートタグ","anchor":"template-tags","children":[{"title":"localtime","anchor":"localtime","children":[]},{"title":"timezone","anchor":"timezone","children":[]},{"title":"get_current_timezone","anchor":"get-current-timezone","children":[]}]},{"title":"テンプレートフィルタ","anchor":"template-filters","children":[{"title":"localtime","anchor":"std-templatefilter-localtime","children":[]},{"title":"utc","anchor":"utc","children":[]},{"title":"timezone","anchor":"std-templatefilter-timezone","children":[]}]}]},{"title":"移行ガイド","anchor":"migration-guide","children":[{"title":"データベース","anchor":"database","children":[{"title":"PostgreSQL","anchor":"postgresql","children":[]},{"title":"他のデータベース","anchor":"other-databases","children":[]}]},{"title":"コード","anchor":"code","children":[]},{"title":"フィクスチャー","anchor":"fixtures","children":[]}]},{"title":"FAQ","anchor":"faq","children":[{"title":"セットアップ","anchor":"setup","children":[]},{"title":"トラブルシューティング","anchor":"troubleshooting","children":[]},{"title":"使い方","anchor":"usage","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Django を使う","url":"/ja/1.10/topics/"},{"docname":"topics/i18n/index","title":"国際化とローカル化","url":"/ja/1.10/topics/i18n/"}],"prev":{"docname":"topics/i18n/formatting","title":"表示形式のローカル化","url":"/ja/1.10/topics/i18n/formatting/"},"next":{"docname":"topics/logging","title":"ロギング","url":"/ja/1.10/topics/logging/"},"formats":{"html":"/ja/1.10/topics/i18n/timezones/","markdown":"/ja/1.10/topics/i18n/timezones.md","json":"/ja/1.10/topics/i18n/timezones.json"},"source":"https://github.com/django/django/blob/stable/1.10.x/docs/topics/i18n/timezones.txt","official":"https://docs.djangoproject.com/ja/1.10/topics/i18n/timezones/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","fr","ja","id","pt-br","es","el","pl"]}