【问题标题】:How to convert seconds to hh:mm:ss with the Django's date template tag?如何使用 Django 的日期模板标签将秒转换为 hh:mm:ss?
【发布时间】:2010-12-21 10:21:45
【问题描述】:

编辑:有没有一种方法可以轻松地将{{ value|date:"Z" }} 转换为 +hh:mm 或 -hh:mm 格式之一(因为 date:"Z" 返回 xxxx 或 -xxxx 秒)。

显示this 以获取有关所需格式的更多说明。

谢谢你,对不起我丑陋的英语。 ;)

【问题讨论】:

  • 我不太清楚你在问什么。也许你可以改写一下,或者多解释一下你想要完成的事情。

标签: python django django-templates


【解决方案1】:

在这里澄清一下,需要冒号的是时区偏移量,即上例中的2009-11-29T14:33:59-0600应该是2009-11-29T14:33:59-06:00,以符合W3C指南。

django/utils/dateformat.py的代码:

  def O(self):
    "Difference to Greenwich time in hours; e.g. '+0200'"
    seconds = self.Z()
    return u"%+03d%02d" % (seconds // 3600, (seconds // 60) % 60)

您可以编辑 您的本地 django 副本 以添加 ':' 这样; return u"%+03d:%02d" % (seconds // 3600, (seconds // 60) % 60) 或创建您自己的模板标签来有效地做同样的事情。但可能最简单的方法是在视图中组合字符串,并将其作为变量传递给模板。

HTML5 版本的时区似乎不是开箱即用的。

[更新]

经过反思,您可能会这样做;

>>> from django.utils import dateformat
>>> fmt = "Y-m-d\TH:i:sO"
>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2009, 12, 1, 12, 39, 48, 655867)
>>> str = dateformat.format(now, fmt)
>>> print str
2009-12-01T12:39:48+0000
>>>

然后加上':'

>>> s = str[:-2] + ':' + str[-2:]
>>> s
u'2009-12-01T12:39:48+00:00'
>>> 

【讨论】:

    【解决方案2】:

    你需要 O 而不是 Z(那是“哦”,而不是“零”)。

    >>> from django.template import *
    >>> Template('{% now "Y-m-d\TH:i:sO" %}').render(Context())
    u'2009-11-29T14:33:59-0600'
    

    【讨论】:

    • 这是一个更好的主意,但是 HTML5 规范需要 +xx:xx 或 -xx:xx 格式之一,并且 {% now "O" %} 返回 +xxxx 或 -xxxx。
    猜你喜欢
    • 2019-11-25
    • 2018-07-11
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多