[英]How Do I Convert UTC Time To User's Local Time in Django?
這些答案沒有幫助:
所有日期時間數據都以 UTC 格式存儲在我的數據庫中。
我希望我的每個用戶都能看到他們本地時區的日期時間,而不是 UTC。 我試過下面的代碼:
設置.py
TIME_ZONE = 'UTC'
USE_TZ = True
視圖.py
from django.shortcuts import render
from home_app import models
from django.utils import timezone
import pytz
def home_view(request):
timezone.activate(pytz.timezone('Asia/Kolkata'))
sample_queryset = models.TimeModel.objects.all()
return render(request, 'home/home.html', {'sample_queryset': sample_queryset,})
主頁.html
{% for row in sample_queryset %}
{% load tz %}
{% localtime on %}
{{ row.time }}
{% endlocaltime %}
{% endfor %}
模型.py
from django.db import models
class TimeModel(models.Model):
sample_text = models.CharField(max_length=255)
time = models.DateTimeField(auto_now=True)
def __str__(self):
return str(self.time) + ' ' + self.sample_text
但是,畢竟正在打印來自數據庫的相同 UTC 時間。
其他詳情:
Django 1.11
SQLite(目前;將在生產中使用 Postgres)
蟒蛇 3.6.8
有效的時區值基於 Linux 和其他 Unix 系統使用的 tz(時區)數據庫。 這些值是“區域/位置”形式的字符串 (xsd:string),其中:
區域是大陸或海洋的名稱。 區域目前包括:
位置是城市、島嶼或其他區域名稱。
區域名稱和輸出縮寫遵循 POSIX(便攜式操作系統接口)UNIX 約定,它使用格林威治以西的正 (+) 號和格林威治以東的負 (-) 號,這與通常預期的相反。 例如,“Etc/GMT+4”對應於 UTC 后 4 小時(即格林威治以西),而不是 UTC(協調世界時)(格林威治以東)提前 4 小時。
您可以在 settings.py 中更改時區,如下所示
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_L10N = True
USE_TZ = True
我已經從 SQLite 遷移到 Postgres 並進行了以下更改:
模型.py
前:
從 django.db 導入模型
class TimeModel(models.Model):
sample_text = models.CharField(max_length=255)
time = models.DateTimeField(auto_now=True) # changed time to dt
def __str__(self):
return str(self.time) + ' ' + self.sample_text
后:
from django.db import models
class TimeModel(models.Model):
sample_text = models.CharField(max_length=255)
dt = models.DateTimeField(auto_now=True) # changed time to dt
def __str__(self):
return str(self.dt) + ' ' + self.sample_text
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.