Python 如何将UTC时间转换为用户';Django的当地时间是什么时候?
这些答案没有帮助: 所有日期时间数据都存储在我的数据库中的UTC中 我希望我的每个用户都能看到他们本地时区中的日期时间,而不是UTC。我尝试了以下代码: 设置.pyPython 如何将UTC时间转换为用户';Django的当地时间是什么时候?,python,django,datetime,django-templates,Python,Django,Datetime,Django Templates,这些答案没有帮助: 所有日期时间数据都存储在我的数据库中的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(
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,})
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
home.html
{% for row in sample_queryset %}
{% load tz %}
{% localtime on %}
{{ row.time }}
{% endlocaltime %}
{% endfor %}
型号.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,})
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时间
其他详细信息:
TIME_ZONE = 'UTC'
USE_TZ = True
Django 1.11
SQLite(目前,将在生产中使用Postgres)
Python3.6.8在模板代码中,问题看起来应该是
{% for row in sample_queryset %}
{% load tz %}
{% timezone timezone_string %}
{{ row.time }}
{% endtimezone %}
{% endfor %}
我怀疑根据这里的设置,为您拾取的时区是settings.py中的UTC
您应该改为使用它我已经从SQLite迁移到Postgres,并做了以下更改: 型号.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,})
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
之前:
从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
之后:
有效的时区值基于Linux和其他Unix系统使用的tz(时区)数据库。值是字符串(xsd:string),格式为“区域/位置”,其中: 区域是一个大陆或海洋名称。目前的领域包括:
- 非洲
- 美国(北美和南美)
- 南极洲
- 北极的
- 亚洲
- 大西洋
- 澳大利亚
- 欧洲
- Etc(行政区域)。例如,“Etc/UTC”表示 协调世界时。)
- 印第安人
- 太平洋的
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_L10N = True
USE_TZ = True
你能试试这个吗?已经试过了。不走运。请你看看好吗@丹尼尔罗斯曼