Django中用户定义的条件标准本地日期时间格式

时间:2017-02-02 06:38:11

标签: django datetime

我有一个Django项目,其中每个语言环境都有formats.py个文件(英语,法语,西班牙语等)。

formats.py文件如下所示:

DATETIME_FORMAT = 'd b Y h:i'

现在,我的目标是使用用户定义的格式定义和替换'd b Y h:i',我今天获取'h:i''d b Y h:i'获取与今天不同的日期。 Django有可能吗?

我遇到了this post,但它无法帮助我定义我可以在formats/py中使用的STANDARD FORMAT。相反,它告诉我们如何创建一个过滤器,我必须在模板中为每次出现的datetime字段显式应用。

更新:

我知道如何在settings.py中定义标准日期时间格式:

FORMAT_MODULE_PATH = [
    'android_blend.formats',
]

我的问题是如何定义一个有条件的用户定义的格式,我今天和今天的日期格式不同。

2 个答案:

答案 0 :(得分:1)

这可能会对您有所帮助: -

today =  datetime.now()

{% if inputDate == today %}
    <p>DateHeading: {{ showDate|date:"h:i" }}</p>

{% if inputDate > today %}
    <p>DateHeading: {{ showDate|date:"d b Y h:i" }}</p>

答案 1 :(得分:-1)

您可以根据需要设置一个简单的模板标记来格式化日期时间。

在你的应用中创建一个名为templatetags的python文件夹 在里面创建一个文件custom_date_format.py 其内容可能是

from django import template
register = template.Library()

@register.simple_tag(name="custom_date_format")
def custom_date_format(timestamp, user, **kwargs):
    if user.type =="option1":
         return datetime.strftime("%Y%m%d")
    elsif user.type =="option2":
         return datetime.strftime("%Y%m%d %H")
    else:
         return datetime.strftime("%Y%m%d %m")

现在,您可以在模板中

{% load custom_date_form %}
{% custom_date_format datetimefield user %}