{"title":"Tidszoner","version":"6.0","locale":"sv","docname":"topics/i18n/timezones","url":"/sv/6.0/topics/i18n/timezones/","canonical":"https://djangodocs.dev/sv/6.0/topics/i18n/timezones/","summary":"Översikt Link to this heading # När stöd för tidszoner är aktiverat lagrar Django datetime-information i UTC i databasen, använder tidszonmedvetna datetime-objekt…","html":"<h1>Tidszoner<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>Översikt<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>När stöd för tidszoner är aktiverat lagrar Django datetime-information i UTC i databasen, använder tidszonmedvetna datetime-objekt internt och konverterar dem till slutanvändarens tidszon i formulär. Mallar kommer att använda <a class=\"reference internal\" href=\"#default-current-time-zone\"><span class=\"std std-ref\">standardtidszonen</span></a>, men detta kan uppdateras till slutanvändarens tidszon genom användning av <a class=\"reference internal\" href=\"#time-zones-in-templates\"><span class=\"std std-ref\">filter och taggar</span></a>.</p>\n<p>Detta är praktiskt om dina användare bor i mer än en tidszon och du vill visa datatidsinformation enligt varje användares väggklocka.</p>\n<p>Även om din webbplats bara är tillgänglig i en enda tidszon är det ändå bra att lagra data i UTC i databasen. Det främsta skälet är sommartid (DST). Många länder har ett system med sommartid, där klockorna ställs fram på våren och tillbaka på hösten. Om du arbetar med lokal tid kommer du sannolikt att stöta på fel två gånger om året, när övergångarna sker. Det här spelar förmodligen ingen roll för din blogg, men det är ett problem om du överfakturerar eller underfakturerar dina kunder med en timme, två gånger om året, varje år. Lösningen på det här problemet är att använda UTC i koden och endast använda lokal tid när du interagerar med slutanvändare.</p>\n<p>Stöd för tidszoner är aktiverat som standard. För att inaktivera det, ange <a class=\"reference internal\" href=\"/sv/6.0/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\">False</span></code></a> i din inställningsfil.</p>\n<p>Tidszonsstöd använder <a class=\"reference external\" href=\"https://docs.python.org/3/library/zoneinfo.html#module-zoneinfo\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">zoneinfo</span></code></a>, som är en del av Pythons standardbibliotek från Python 3.9.</p>\n<p>Om du brottas med ett särskilt problem kan du börja med <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>Koncept<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>Naiva och medvetna datetime-objekt<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>Pythons <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>-objekt har ett <code class=\"docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code>-attribut som kan användas för att lagra tidszoninformation, representerad som en instans av en underklass av <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>. När detta attribut är inställt och beskriver en förskjutning, är ett datetime-objekt <strong>medvetet</strong>. Annars är det <strong>naive</strong>.</p>\n<p>Du kan använda <a class=\"reference internal\" href=\"/sv/6.0/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> och <a class=\"reference internal\" href=\"/sv/6.0/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> för att avgöra om datatider är medvetna eller naiva.</p>\n<p>När stödet för tidszoner är avaktiverat använder Django naiva datetime-objekt i lokal tid. Detta är tillräckligt för många användningsfall. I det här läget skulle du skriva: för att få aktuell tid:</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>När stöd för tidszoner är aktiverat (<a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ=True</span></code></a>) använder Django tidszonsmedvetna datetime-objekt. Om din kod skapar datetime-objekt bör de också vara medvetna. I det här läget blir exemplet ovan:</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\">Varning</p>\n<p>Att hantera medvetna datetime-objekt är inte alltid intuitivt. Till exempel fungerar inte <code class=\"docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code>-argumentet i standard datetime-konstruktören tillförlitligt för tidszoner med DST. Att använda UTC är i allmänhet säkert; om du använder andra tidszoner bör du granska <a class=\"reference external\" href=\"https://docs.python.org/3/library/zoneinfo.html#module-zoneinfo\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">zoneinfo</span></code></a>-dokumentationen noggrant.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Pythons <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>-objekt har också ett <code class=\"docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code>-attribut, och PostgreSQL har en matchande <code class=\"docutils literal notranslate\"><span class=\"pre\">tid</span> <span class=\"pre\">med</span> <span class=\"pre\">tidszon</span></code>-typ. Men som PostgreSQL: s dokument uttrycker det, den här typen ”uppvisar egenskaper som leder till tvivelaktig användbarhet”.</p>\n<p>Django stöder endast naiva tidsobjekt och kommer att ge upphov till ett undantag om du försöker spara ett medvetet tidsobjekt, eftersom en tidszon för en tid utan något associerat datum inte är meningsfullt.</p>\n</aside>\n</section>\n<section id=\"interpretation-of-naive-datetime-objects\">\n<span id=\"naive-datetime-objects\"></span><h3>Tolkning av naiva datetime-objekt<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>När <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> är <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, accepterar Django fortfarande naiva datetime-objekt, för att bevara bakåtkompatibilitet. När databaslagret tar emot ett sådant försöker det göra det medvetet genom att tolka det i <a class=\"reference internal\" href=\"#default-current-time-zone\"><span class=\"std std-ref\">default time zone</span></a> och ger en varning.</p>\n<p>Under DST-övergångar finns det tyvärr vissa datatider som inte existerar eller som är tvetydiga. Det är därför du alltid bör skapa medvetna datetime-objekt när stöd för tidszoner är aktiverat. (Se <a class=\"reference external\" href=\"https://docs.python.org/3/library/zoneinfo.html#module-zoneinfo\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">Using</span> <span class=\"pre\">ZoneInfo</span> <span class=\"pre\">section</span> <span class=\"pre\">of</span> <span class=\"pre\">the</span> <span class=\"pre\">zoneinfo</span> <span class=\"pre\">docs</span></code></a> för exempel på användning av attributet <code class=\"docutils literal notranslate\"><span class=\"pre\">fold</span></code> för att ange den förskjutning som ska gälla för en datatid under en övergång till sommartid)</p>\n<p>I praktiken är detta sällan ett problem. Django ger dig medvetna datetime-objekt i modellerna och formulären, och oftast skapas nya datetime-objekt från befintliga genom <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>-aritmetik. Den enda datatid som ofta skapas i applikationskoden är den aktuella tiden, och <a class=\"reference internal\" href=\"/sv/6.0/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> gör automatiskt rätt sak.</p>\n</section>\n<section id=\"default-time-zone-and-current-time-zone\">\n<span id=\"default-current-time-zone\"></span><h3>Standardtidszon och aktuell tidszon<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>Standardtidszonen</strong> är den tidszon som definieras av inställningen <a class=\"reference internal\" href=\"/sv/6.0/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>Den <strong>aktuella tidszonen</strong> är den tidszon som används för rendering.</p>\n<p>Du bör ställa in den aktuella tidszonen till slutanvändarens faktiska tidszon med <a class=\"reference internal\" href=\"/sv/6.0/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>. Annars används standardtidszonen.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Som förklaras i dokumentationen av <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a>, ställer Django in miljövariabler så att dess process körs i standardtidszonen. Detta sker oberoende av värdet på <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> och den aktuella tidszonen.</p>\n<p>When <a class=\"reference internal\" href=\"/sv/6.0/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>, this is useful to preserve\nbackwards-compatibility with applications that still rely on local time.\nHowever, <a class=\"reference internal\" href=\"#naive-datetime-objects\"><span class=\"std std-ref\">as explained above</span></a>, this isn’t\nentirely reliable, and you should always work with aware datetimes in UTC\nin your own code. For instance, use\n<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> and set the <code class=\"docutils literal notranslate\"><span class=\"pre\">tz</span></code> parameter to\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.UTC\" title=\"(in Python v3.14)\"><code class=\"xref py py-obj docutils literal notranslate\"><span class=\"pre\">datetime.UTC</span></code></a>.</p>\n</aside>\n</section>\n<section id=\"selecting-the-current-time-zone\">\n<h3>Välja aktuell tidszon<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>Den aktuella tidszonen är motsvarigheten till den aktuella <a class=\"reference internal\" href=\"/sv/6.0/topics/i18n/#term-locale-name\"><span class=\"xref std std-term\">locale</span></a> för översättningar. Det finns dock ingen motsvarighet till HTTP-headern <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept-Language</span></code> som Django kan använda för att automatiskt bestämma användarens tidszon. Istället tillhandahåller Django <a class=\"reference internal\" href=\"/sv/6.0/ref/utils/#time-zone-selection-functions\"><span class=\"std std-ref\">funktioner för val av tidszon</span></a>. Använd dem för att bygga den logik för val av tidszon som är vettig för dig.</p>\n<p>De flesta webbplatser som bryr sig om tidszoner frågar användarna i vilken tidszon de bor och lagrar denna information i användarens profil. För anonyma användare använder de tidszonen för sin primära målgrupp eller UTC. <a class=\"reference external\" href=\"https://docs.python.org/3/library/zoneinfo.html#zoneinfo.available_timezones\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">zoneinfo.available_timezones()</span></code></a> ger en uppsättning tillgängliga tidszoner som du kan använda för att bygga en karta från sannolika platser till tidszoner.</p>\n<p>Här är ett exempel som lagrar den aktuella tidszonen i sessionen. (Det hoppar över felhanteringen helt för enkelhetens skull)</p>\n<p>Lägg till följande middleware i <a class=\"reference internal\" href=\"/sv/6.0/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\">zoneinfo</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\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">TimezoneMiddleware</span><span class=\"p\">:</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">get_response</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span> <span class=\"o\">=</span> <span class=\"n\">get_response</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__call__</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=\"s2\">&quot;django_timezone&quot;</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\">zoneinfo</span><span class=\"o\">.</span><span class=\"n\">ZoneInfo</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        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Skapa en vy som kan ställa in aktuell tidszon:</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=\"c1\"># Prepare a map of common locations to timezone choices you wish to offer.</span>\n<span class=\"n\">common_timezones</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;London&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Europe/London&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Paris&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Europe/Paris&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;New York&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;America/New_York&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">}</span>\n\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=\"s2\">&quot;POST&quot;</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=\"s2\">&quot;django_timezone&quot;</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=\"s2\">&quot;timezone&quot;</span><span class=\"p\">]</span>\n        <span class=\"k\">return</span> <span class=\"n\">redirect</span><span class=\"p\">(</span><span class=\"s2\">&quot;/&quot;</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=\"s2\">&quot;template.html&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;timezones&quot;</span><span class=\"p\">:</span> <span class=\"n\">common_timezones</span><span class=\"p\">})</span>\n</code></pre></div>\n<p>Inkludera ett formulär i <code class=\"docutils literal notranslate\"><span class=\"pre\">template.html</span></code> som kommer att <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code> till denna vy:</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\">city</span><span class=\"o\">,</span> <span class=\"nv\">tz</span> <span class=\"k\">in</span> <span class=\"nv\">timezones.items</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=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">city</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>Tidszonmedveten inmatning i formulär<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>När du aktiverar stöd för tidszoner tolkar Django datatider som anges i formulär i <a class=\"reference internal\" href=\"#default-current-time-zone\"><span class=\"std std-ref\">aktuell tidszon</span></a> och returnerar medvetna datatidsobjekt i <code class=\"docutils literal notranslate\"><span class=\"pre\">cleaned_data</span></code>.</p>\n<p>Konverterade datumtider som inte existerar eller som är tvetydiga eftersom de faller i en DST-övergång kommer att rapporteras som ogiltiga värden.</p>\n</section>\n<section id=\"time-zone-aware-output-in-templates\">\n<span id=\"time-zones-in-templates\"></span><h2>Tidszonmedveten utdata i mallar<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>När du aktiverar stöd för tidszoner konverterar Django medvetna datetime-objekt till <a class=\"reference internal\" href=\"#default-current-time-zone\"><span class=\"std std-ref\">aktuell tidszon</span></a> när de återges i mallar. Detta beter sig väldigt mycket som <a class=\"reference internal\" href=\"/sv/6.0/topics/i18n/formatting/\"><span class=\"doc\">format localization</span></a>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Django konverterar inte naiva datetime-objekt, eftersom de kan vara tvetydiga och eftersom din kod aldrig bör producera naiva datetimes när tidszonsstöd är aktiverat. Du kan dock tvinga fram konvertering med de mallfilter som beskrivs nedan.</p>\n</aside>\n<p>Omvandling till lokal tid är inte alltid lämplig - du kanske genererar utdata för datorer snarare än för människor. Följande filter och taggar, som tillhandahålls av malltaggbiblioteket <code class=\"docutils literal notranslate\"><span class=\"pre\">tz</span></code>, gör att du kan kontrollera tidszonskonverteringarna.</p>\n<section id=\"template-tags\">\n<h3>Malltaggar<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\">lokaltid</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>Aktiverar eller inaktiverar konvertering av medvetna datetime-objekt till den aktuella tidszonen i det block som ingår.</p>\n<p>Denna tagg har exakt samma effekter som inställningen <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> när det gäller mallmotorn. Den tillåter en mer finkornig kontroll av konverteringen.</p>\n<p>För att aktivera eller avaktivera konvertering för ett mallblock, använd:</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\">Observera</p>\n<p>Värdet på <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> respekteras inte inuti ett <code class=\"docutils literal notranslate\"><span class=\"pre\">{%</span> <span class=\"pre\">localtime</span> <span class=\"pre\">%}</span></code> block.</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\">tidszon</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>Ställer in eller tar bort den aktuella tidszonen i det block som ingår. När den aktuella tidszonen inte är inställd gäller standardtidszonen.</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\">hämta</span> <span class=\"pre\">aktuell</span> <span class=\"pre\">tidszon</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>Du kan få namnet på den aktuella tidszonen med hjälp av taggen <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>Alternativt kan du aktivera kontextprocessorn <a class=\"reference internal\" href=\"/sv/6.0/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> och använda kontextvariabeln <code class=\"docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code>.</p>\n</section>\n</section>\n<section id=\"template-filters\">\n<h3>Mallfilter<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>Dessa filter accepterar både medvetna och naiva datatider. För konverteringsändamål antar de att naiva datatider är i standardtidszonen. De returnerar alltid medvetna datatider.</p>\n<section id=\"std-templatefilter-localtime\">\n<span id=\"id1\"></span><h4><code class=\"docutils literal notranslate\"><span class=\"pre\">lokaltid</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>Tvingar fram konvertering av ett enskilt värde till aktuell tidszon.</p>\n<p>Till exempel:</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>Tvingar fram konvertering av ett enskilt värde till UTC.</p>\n<p>Till exempel:</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\">tidszon</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>Tvingar fram konvertering av ett enskilt värde till en godtycklig tidszon.</p>\n<p>Argumentet måste vara en instans av en <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>-underklass eller ett tidszonnamn.</p>\n<p>Till exempel:</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>Migrationsguide<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>Så här gör du för att migrera ett projekt som startades innan Django stödde tidszoner.</p>\n<section id=\"database\">\n<h3>Databas<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>PostgreSQL-backend lagrar datatider som `` tidsstämpel med tidszon``. I praktiken betyder det att den konverterar datatider från anslutningens tidszon till UTC vid lagring och från UTC till anslutningens tidszon vid hämtning.</p>\n<p>Som en följd av detta, om du använder PostgreSQL, kan du växla mellan <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code> fritt. Databasanslutningens tidszon kommer att ställas in till <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-DATABASE-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DATABASE-TIME_ZONE</span></code></a> respektive <code class=\"docutils literal notranslate\"><span class=\"pre\">UTC</span></code>, så att Django får korrekta datatider i alla fall. Du behöver inte utföra några datakonverteringar.</p>\n<aside class=\"admonition-time-zone-settings admonition\">\n<p class=\"admonition-title\">Inställningar för tidszon</p>\n<p>Den <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-DATABASE-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">tidszon</span></code></a> som har konfigurerats för anslutningen i <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DATABASES</span></code></a> skiljer sig från den allmänna <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a>-inställningen.</p>\n</aside>\n</section>\n<section id=\"other-databases\">\n<h4>Övriga databaser<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>Andra backends lagrar datatider utan tidszoninformation. Om du byter från <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code> till <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code>, måste du konvertera dina data från lokal tid till UTC - vilket inte är deterministiskt om din lokala tid har DST.</p>\n</section>\n</section>\n<section id=\"code\">\n<h3>Kod<a class=\"heading-anchor\" href=\"#code\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Det första steget är att lägga till <a class=\"reference internal\" href=\"/sv/6.0/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> i din inställningsfil. Vid denna punkt bör saker och ting mestadels fungera. Om du skapar naiva datetime-objekt i din kod, gör Django dem medvetna när det behövs.</p>\n<p>Dessa konverteringar kan dock misslyckas vid DST-övergångar, vilket innebär att du inte får alla fördelar med tidszonsstöd ännu. Dessutom kommer du sannolikt att stöta på några problem eftersom det är omöjligt att jämföra en naiv datatid med en medveten datatid. Eftersom Django nu ger dig medvetna datatider kommer du att få undantag när du jämför en datatid som kommer från en modell eller ett formulär med en naiv datatid som du har skapat i din kod.</p>\n<p>Så det andra steget är att omarbeta din kod varhelst du instansierar datetime-objekt för att göra dem medvetna. Detta kan göras stegvis. <a class=\"reference internal\" href=\"/sv/6.0/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> definierar några praktiska hjälpmedel för kompatibilitetskod: <a class=\"reference internal\" href=\"/sv/6.0/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=\"/sv/6.0/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=\"/sv/6.0/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=\"/sv/6.0/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>, och <a class=\"reference internal\" href=\"/sv/6.0/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>Slutligen, för att hjälpa dig att hitta kod som behöver uppgraderas, ger Django en varning när du försöker spara en naiv datatid i databasen:</p>\n<div class=\"code-block\" data-language=\"pytb\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Pytb</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=\"Pytb code\"><code><span class=\"x\">RuntimeWarning: DateTimeField ModelName.field_name received a naive</span>\n<span class=\"x\">datetime (2012-01-01 00:00:00) while time zone support is active.</span>\n</code></pre></div>\n<p>Under utvecklingsarbetet kan du omvandla sådana varningar till undantag och få en spårning genom att lägga till följande i din inställningsfil:</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\">warnings</span>\n\n<span class=\"n\">warnings</span><span class=\"o\">.</span><span class=\"n\">filterwarnings</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;error&quot;</span><span class=\"p\">,</span>\n    <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>\n    <span class=\"sa\">r</span><span class=\"s2\">&quot;django\\.db\\.models\\.fields&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"fixtures\">\n<h3>Fixturer<a class=\"heading-anchor\" href=\"#fixtures\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Vid serialisering av en medveten datatid inkluderas UTC-offset, så här:</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=\"s2\">&quot;2011-09-01T13:20:30+03:00&quot;</span>\n</code></pre></div>\n<p>Medan det för en naiv datatid inte är:</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=\"s2\">&quot;2011-09-01T13:20:30&quot;</span>\n</code></pre></div>\n<p>För modeller med <a class=\"reference internal\" href=\"/sv/6.0/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> gör denna skillnad det omöjligt att skriva en fixtur som fungerar både med och utan stöd för tidszoner.</p>\n<p>Fixturer som genererats med <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code>, eller före Django 1.4, använder det ”naiva” formatet. Om ditt projekt innehåller sådana fixturer kommer du att se <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> när du laddar dem efter att du har aktiverat stöd för tidszoner. För att bli av med varningarna måste du konvertera dina fixturer till ”aware”-formatet.</p>\n<p>Du kan regenerera fixturer med <a class=\"reference internal\" href=\"/sv/6.0/ref/django-admin/#django-admin-loaddata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">loaddata</span></code></a> och sedan <a class=\"reference internal\" href=\"/sv/6.0/ref/django-admin/#django-admin-dumpdata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">dumpdata</span></code></a>. Eller, om de är tillräckligt små, kan du redigera dem för att lägga till UTC-offset som matchar din <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> till varje serialiserad datatid.</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>Setup<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>Jag behöver inte flera tidszoner. Ska jag aktivera stöd för tidszoner?</strong></p>\n<p>Ja, det stämmer. När stöd för tidszoner är aktiverat använder Django en mer exakt modell av lokal tid. Detta skyddar dig från subtila och icke reproducerbara buggar kring övergångar till sommartid (DST).</p>\n<p>När du aktiverar stöd för tidszoner kommer du att stöta på vissa fel eftersom du använder naiva datatider där Django förväntar sig medvetna datatider. Sådana fel dyker upp när man kör tester. Du kommer snabbt att lära dig hur du undviker ogiltiga operationer.</p>\n<p>Å andra sidan är buggar som orsakas av avsaknad av stöd för tidszoner mycket svårare att förebygga, diagnostisera och åtgärda. Allt som involverar schemalagda uppgifter eller datatidsaritmetik är en kandidat för subtila buggar som bara kommer att bita dig en eller två gånger om året.</p>\n<p>Av dessa skäl är stöd för tidszoner aktiverat som standard i nya projekt, och du bör behålla det om du inte har en mycket god anledning att inte göra det.</p>\n</li>\n<li><p><strong>Jag har aktiverat tidszonsstöd. Är jag säker?</strong></p>\n<p>Ja, kanske det. Du är bättre skyddad från DST-relaterade buggar, men du kan fortfarande skjuta dig själv i foten genom att slarvigt förvandla naiva datatider till medvetna datatider och vice versa.</p>\n<p>Om din applikation ansluter till andra system - t.ex. om den frågar en webbtjänst - måste du se till att datatiderna är korrekt angivna. För att överföra datatider på ett säkert sätt bör deras representation inkludera UTC-offset, eller så bör deras värden vara i UTC (eller båda!).</p>\n<p>Slutligen innehåller vårt kalendersystem intressanta undantagsfall. Till exempel kan man inte alltid subtrahera ett år direkt från ett givet datum:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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 console 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\"># Wrong example.</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\">...</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>För att implementera en sådan funktion korrekt måste du bestämma om 2012-02-29 minus ett år är 2011-02-28 eller 2011-03-01, vilket beror på dina affärskrav.</p>\n</li>\n<li><p><strong>Hur interagerar jag med en databas som lagrar datatider i lokal tid?</strong></p>\n<p>Ställ in alternativet <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-DATABASE-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> till lämplig tidszon för den här databasen i inställningen <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DATABASES</span></code></a>.</p>\n<p>Detta är användbart för att ansluta till en databas som inte stöder tidszoner och som inte hanteras av Django när <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> är <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</li>\n</ol>\n</section>\n<section id=\"troubleshooting\">\n<h3>Felsökning<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>Mitt program kraschar med</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> <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>– what’s wrong? **</p>\n<p>Låt oss återskapa detta fel genom att jämföra en naiv och en medveten datetime:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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 console 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\">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\">timezone</span><span class=\"o\">.</span><span class=\"n\">make_naive</span><span class=\"p\">(</span><span class=\"n\">aware</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>Om du stöter på detta fel är det troligt att din kod jämför dessa två saker:</p>\n<ul class=\"simple\">\n<li><p>en datatid som tillhandahålls av Django - till exempel ett värde som läses från ett formulär eller ett modellfält. Eftersom du aktiverade stöd för tidszoner är den medveten.</p></li>\n<li><p>en datatid som genereras av din kod, vilket är naivt (annars skulle du inte läsa det här).</p></li>\n</ul>\n<p>I allmänhet är den korrekta lösningen att ändra din kod så att den använder en medveten datetime istället.</p>\n<p>Om du skriver en pluggbar applikation som förväntas fungera oberoende av värdet på <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a>, kan du tycka att <a class=\"reference internal\" href=\"/sv/6.0/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> är användbar. Denna funktion returnerar aktuellt datum och tid som en naiv datatid när <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code> och som en medveten datatid när <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code>. Du kan lägga till eller dra ifrå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> efter behov.</p>\n</li>\n<li><p><strong>Jag ser massor av</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> <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>– är det dåligt? **</p>\n<p>När stöd för tidszoner är aktiverat förväntar sig databaslagret att endast medvetna datatider tas emot från din kod. Denna varning visas när den tar emot en naiv datetime. Detta indikerar att du inte har slutfört portningen av din kod för stöd för tidszoner. Se <a class=\"reference internal\" href=\"#time-zones-migration-guide\"><span class=\"std std-ref\">migreringsguide</span></a> för tips om den här processen.</p>\n<p>Under tiden, för bakåtkompatibilitet, anses datatiden vara i standardtidszonen, vilket i allmänhet är vad du förväntar dig.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">now.date()</span></code> <strong>är igår! (eller imorgon)</strong></p>\n<p>Om du alltid har använt naiva datetider tror du förmodligen att du kan konvertera en datetime till ett datum genom att anropa dess <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>-metod. Du tror också att en <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> är ungefär som en <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>, förutom att den är mindre exakt.</p>\n<p>Inget av detta är sant i en miljö som är medveten om tidszoner:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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 console 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\">zoneinfo</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">paris_tz</span> <span class=\"o\">=</span> <span class=\"n\">zoneinfo</span><span class=\"o\">.</span><span class=\"n\">ZoneInfo</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\">zoneinfo</span><span class=\"o\">.</span><span class=\"n\">ZoneInfo</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\">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> <span class=\"n\">tzinfo</span><span class=\"o\">=</span><span class=\"n\">paris_tz</span><span class=\"p\">)</span>\n<span class=\"go\"># This is the correct way to convert between time zones.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">new_york</span> <span class=\"o\">=</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=zoneinfo.ZoneInfo(key=&#39;Europe/Paris&#39;))</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=zoneinfo.ZoneInfo(key=&#39;America/New_York&#39;))</span>\n</code></pre></div>\n<p>Som exemplet visar har samma datatid olika datum beroende på i vilken tidszon den representeras. Men det verkliga problemet är mer grundläggande.</p>\n<p>En datatid representerar en <strong>punkt i tiden</strong>. Den är absolut: den är inte beroende av någonting. Tvärtom är ett datum ett <strong>kalendrerande begrepp</strong>. Det är en tidsperiod vars gränser beror på den tidszon i vilken datumet betraktas. Som du kan se är dessa två begrepp fundamentalt olika, och att konvertera en datetime till ett datum är inte en deterministisk operation.</p>\n<p>Vad innebär detta i praktiken?</p>\n<p>Generellt sett bör du undvika att konvertera en <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> till <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>. Du kan t.ex. använda mallfiltret <a class=\"reference internal\" href=\"/sv/6.0/ref/templates/builtins/#std-templatefilter-date\"><code class=\"xref std std-tfilter docutils literal notranslate\"><span class=\"pre\">date</span></code></a> för att bara visa datumdelen av en datatid. Det här filtret konverterar datatiden till aktuell tidszon innan den formateras, vilket säkerställer att resultaten visas korrekt.</p>\n<p>Om du verkligen behöver göra konverteringen själv måste du först se till att datatiden konverteras till rätt tidszon. Vanligtvis kommer detta att vara den aktuella tidszonen:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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 console 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\">zoneinfo</span><span class=\"o\">.</span><span class=\"n\">ZoneInfo</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 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=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">local</span> <span class=\"o\">=</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=zoneinfo.ZoneInfo(key=&#39;Asia/Singapore&#39;))</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>** Jag får ett fel** ”<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Är tidszondefinitioner för din databas installerade? <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>”</p>\n<p>Om du använder MySQL, se avsnittet <a class=\"reference internal\" href=\"/sv/6.0/ref/databases/#mysql-time-zone-definitions\"><span class=\"std std-ref\">Definitioner av tidszoner</span></a> i MySQL Notes för instruktioner om hur du läser in tidszonsdefinitioner.</p>\n</li>\n</ol>\n</section>\n<section id=\"usage\">\n<h3>Användning<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>Jag har en sträng</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;2012-02-21</span> <span class=\"pre\">10:28:45&quot;</span></code> <strong>och jag vet att den är i</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;Europa/Helsingfors&quot;</span></code> <strong>tidszonen. Hur förvandlar jag det till en medveten datatid?</strong></p>\n<p>Här måste du skapa den nödvändiga <code class=\"docutils literal notranslate\"><span class=\"pre\">ZoneInfo</span></code>-instansen och koppla den till den naiva datatiden:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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 console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">zoneinfo</span>\n<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=\"n\">naive</span><span class=\"o\">.</span><span class=\"n\">replace</span><span class=\"p\">(</span><span class=\"n\">tzinfo</span><span class=\"o\">=</span><span class=\"n\">zoneinfo</span><span class=\"o\">.</span><span class=\"n\">ZoneInfo</span><span class=\"p\">(</span><span class=\"s2\">&quot;Europe/Helsinki&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">datetime.datetime(2012, 2, 21, 10, 28, 45, tzinfo=zoneinfo.ZoneInfo(key=&#39;Europe/Helsinki&#39;))</span>\n</code></pre></div>\n</li>\n<li><p><strong>Hur får jag fram den lokala tiden i den aktuella tidszonen?</strong></p>\n<p>Den första frågan är om du verkligen behöver göra det?</p>\n<p>Du bör bara använda lokal tid när du interagerar med människor, och mallskiktet tillhandahåller <a class=\"reference internal\" href=\"#time-zones-in-templates\"><span class=\"std std-ref\">filter och taggar</span></a> för att konvertera datatider till den tidszon du väljer.</p>\n<p>Dessutom vet Python hur man jämför medvetna datatider och tar hänsyn till UTC-offset när det behövs. Det är mycket enklare (och möjligen snabbare) att skriva all din modell- och vykod i UTC. Så under de flesta omständigheter kommer datatiden i UTC som returneras av <a class=\"reference internal\" href=\"/sv/6.0/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> att vara tillräcklig.</p>\n<p>Men om du verkligen vill ha den lokala tiden i den aktuella tidszonen kan du få den så här, för fullständighetens skull:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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 console 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=zoneinfo.ZoneInfo(key=&#39;Europe/Paris&#39;))</span>\n</code></pre></div>\n<p>I detta exempel är den aktuella tidszonen <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;Europa/Paris&quot;</span></code>.</p>\n</li>\n<li><p><strong>Hur kan jag se alla tillgängliga tidszoner?</strong></p>\n<p><a class=\"reference external\" href=\"https://docs.python.org/3/library/zoneinfo.html#zoneinfo.available_timezones\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">zoneinfo.available_timezones()</span></code></a> ger en uppsättning av alla giltiga nycklar för IANA-tidszoner som är tillgängliga för ditt system. Se dokumentationen för användningsöverväganden.</p>\n</li>\n</ol>\n</section>\n</section>","rootId":"time-zones","toc":[{"title":"Översikt","anchor":"overview","children":[]},{"title":"Koncept","anchor":"concepts","children":[{"title":"Naiva och medvetna datetime-objekt","anchor":"naive-and-aware-datetime-objects","children":[]},{"title":"Tolkning av naiva datetime-objekt","anchor":"interpretation-of-naive-datetime-objects","children":[]},{"title":"Standardtidszon och aktuell tidszon","anchor":"default-time-zone-and-current-time-zone","children":[]},{"title":"Välja aktuell tidszon","anchor":"selecting-the-current-time-zone","children":[]}]},{"title":"Tidszonmedveten inmatning i formulär","anchor":"time-zone-aware-input-in-forms","children":[]},{"title":"Tidszonmedveten utdata i mallar","anchor":"time-zone-aware-output-in-templates","children":[{"title":"Malltaggar","anchor":"template-tags","children":[{"title":"lokaltid","anchor":"localtime","children":[]},{"title":"tidszon","anchor":"timezone","children":[]},{"title":"hämta aktuell tidszon","anchor":"get-current-timezone","children":[]}]},{"title":"Mallfilter","anchor":"template-filters","children":[{"title":"lokaltid","anchor":"std-templatefilter-localtime","children":[]},{"title":"utc","anchor":"utc","children":[]},{"title":"tidszon","anchor":"std-templatefilter-timezone","children":[]}]}]},{"title":"Migrationsguide","anchor":"migration-guide","children":[{"title":"Databas","anchor":"database","children":[{"title":"PostgreSQL","anchor":"postgresql","children":[]},{"title":"Övriga databaser","anchor":"other-databases","children":[]}]},{"title":"Kod","anchor":"code","children":[]},{"title":"Fixturer","anchor":"fixtures","children":[]}]},{"title":"FAQ","anchor":"faq","children":[{"title":"Setup","anchor":"setup","children":[]},{"title":"Felsökning","anchor":"troubleshooting","children":[]},{"title":"Användning","anchor":"usage","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Använda Django","url":"/sv/6.0/topics/"},{"docname":"topics/i18n/index","title":"Internationalisering och lokalisering","url":"/sv/6.0/topics/i18n/"}],"prev":{"docname":"topics/i18n/formatting","title":"Lokalisering av format","url":"/sv/6.0/topics/i18n/formatting/"},"next":{"docname":"topics/logging","title":"Loggning","url":"/sv/6.0/topics/logging/"},"formats":{"html":"/sv/6.0/topics/i18n/timezones/","markdown":"/sv/6.0/topics/i18n/timezones.md","json":"/sv/6.0/topics/i18n/timezones.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/topics/i18n/timezones.txt","official":"https://docs.djangoproject.com/sv/6.0/topics/i18n/timezones/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}