Django timezone.now()。time显示的时区不正确

时间:2018-10-29 14:01:02

标签: python django django-views

该主题是解决我所遇到的问题的最简单方法。

我正在使用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" }}

有人知道解决这个问题的方法吗?

3 个答案:

答案 0 :(得分:0)

尝试一下

timezone.now()传递到timezone.localtime

from django.utils import timezone
timezone.localtime(timezone.now())

更多信息here

答案 1 :(得分:0)

问题是您正在尝试使用time对象而不是datetime对象。 localtimetimezone模板标签和过滤器需要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

上找到。