Django:如何在视图中获取格式日期?

时间:2011-11-27 18:23:39

标签: python django date

我需要在视图中使用SHORT_DATETIME_FORMAT。

def manage_list(request):

    user = User.objects.filter().order_by('date_joined') 
    usrs = [] 
    for usr in user: 
        usrs.append({
            _('First name'):  usr.first_name, 
            _('Last name'):   usr.last_name,
            _('Email'):       usr.email,
            _('Active'):      usr.is_active,
            _('Superuser'):   usr.is_superuser,
            _('Staff'):       usr.is_staff,
            _('Joined date'): usr.date_joined.strftime(SHORT_DATETIME_FORMAT),    
        }) 

    data = simplejson.dumps(usrs, indent=4)
    return HttpResponse(data, mimetype='application/json')

usr.date_joined我认为有一种“日期字段”。我想根据django语言环境格式化这些数据。所以这个字符串可能应该有所帮我知道有一个模板过滤器可以做到这一点,但是我想格式化usr.date_joined 只在视图中 - 保存django选择的语言环境。

如果还有其他方法可以执行此操作,请提供示例。最后我想根据django locale显示一个格式化的日期,它只显示日期和时间,我认为这个常数应该按照名称所说的那样做。

6 个答案:

答案 0 :(得分:64)

django.utils.formats模块正是您所需要的。我在文档中找到的唯一参考是Django 1.2 release notes

请注意,只有USE_L10N设置为True时,本地化才有效。您可以按如下方式使用date_format。

from datetime import datetime
from django.utils import formats
date_joined = datetime.now()
formatted_datetime = formats.date_format(date_joined, "SHORT_DATETIME_FORMAT")

答案 1 :(得分:23)

您可能想尝试使用django.utils.dateformat.DateFormat

>>> from datetime import datetime
>>> dt = datetime.now()
>>> from django.utils.dateformat import DateFormat
>>> from django.utils.formats import get_format
>>> df = DateFormat(dt)
>>> df.format(get_format('DATE_FORMAT'))
u'April 23, 2013'
>>> df.format('Y-m-d')
u'2013-04-23'

使用Python的更多信息:

import django
help(django.utils.dateformat)

答案 2 :(得分:11)

要在视图中使用Django 日期过滤器,请使用defaultfilters,例如:

from django.template import defaultfilters

formatted_date = defaultfilters.date(usr.date_joined, "SHORT_DATETIME_FORMAT")

答案 3 :(得分:1)

使用localize快捷方式。

>>> from django.utils.formats import localize
>>> from datetime import datetime
>>>
>>> print(datetime.now())
2016-12-18 19:30:35.786818
>>> print(localize(datetime.now()))
18 декабря 2016 г. 19:30

答案 4 :(得分:0)

from django.utils.formats import date_format

date_format(usr.date_joined)

答案 5 :(得分:0)

截至今天,对我有用的是将 USE_L10N 设置为 True

然后导入一些工具:

from django.utils import (dateformat, formats)

可以这样使用:

dateformat.format(my_date_object, formats.get_format('DATE_FORMAT'))

注意 my_date_object 应该是一个日期时间对象。

还有一个可用格式列表:

  • DECIMAL_SEPARATOR
  • THOUSAND_SEPARATOR
  • NUMBER_GROUPING
  • FIRST_DAY_OF_WEEK
  • MONTH_DAY_FORMAT
  • TIME_FORMAT
  • 日期格式
  • DATETIME_FORMAT
  • SHORT_DATE_FORMAT
  • SHORT_DATETIME_FORMAT
  • YEAR_MONTH_FORMAT
  • DATE_INPUT_FORMATS
  • TIME_INPUT_FORMATS
  • DATETIME_INPUT_FORMATS

这个名字很容易解释...

见:https://github.com/django/django/blob/main/django/utils/formats.py