该主题是解决我所遇到的问题的最简单方法。
我正在使用Django 2.1
settings.py
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/New_York'
USE_I18N = True
USE_L10N = True
USE_TZ = True
views.py
message = timezone.now().time
message2 = timezone.now
上面的代码是显示我所遇到的问题的最快方法。当我打印'message'时,我得到的时间与从'message2'中得到的时间有所不同,尽管它们都具有相同的值。
我的模型使用auto_now_add功能保存datetimefield。
models.py
class Comment(models.Model):
date_time = models.DateTimeField(auto_now_add=True, blank=True)
当我将HTML字段显示为
{{ comment.date_time }}
正确的日期和时间出现。但是,当我使用自己的格式并将代码拆分为
时{{ comment.date_time.date }}: {{ comment.date_time.time }}
然后我没有时间显示在正确的时区。我尝试了以下所有更改,但无济于事。
{% load tz %}
{% localtime on %}
{{ comment.date_time.time }}
{% endlocaltime %}
{{ comment.date_time.time|localtime }}
{{ comment.date_time.time|timezone:"America/New_York" }}
有人知道解决这个问题的方法吗?
答案 0 :(得分:0)
尝试一下
将timezone.now()
传递到timezone.localtime
from django.utils import timezone
timezone.localtime(timezone.now())
更多信息here。
答案 1 :(得分:0)
问题是您正在尝试使用time
对象而不是datetime
对象。 localtime
和timezone
模板标签和过滤器需要datetime
个对象。
如果要在模板中使用自定义格式,请使用date
过滤器。如果出于某种原因无法提供所需的格式,则您需要在视图中自己进行转换,而不要依赖模板,例如:
from django.utils.timezone import localtime
def view():
local = localtime(comment.date_time)
date_string = str(local.date()) # or whatever custom format you want
time_string = str(local.time()) # or whatever custom format you want
答案 2 :(得分:0)
Register-ScheduledTask : Parameter set cannot be resolved using the specified named parameters.
At C:\Users\ermn\Desktop\P$.ps1:11 char:1
+ Register-ScheduledTask -Xml (Get-Content "C:\Reboot.xml" | Out-String ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Register-ScheduledTask], ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameterSet,Register-ScheduledTask
此外,您必须在 settings.py 中进行更改:
from django.utils import timezone
timezone.localtime(timezone.now())
时区数据库名称的列表可以在https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
上找到。