1

如何将格式的日期字段转换为格式mm/dd/yyyy的格式dd/mm/yyyy和时间字段24hrs to 12hr AM/PM.

这是我在以下情况下使用的

在来自模型的数据库中,我正在获取值,因此如果从 db 获取的值是“0”,则日期和时间格式应该是(dd/mm/yyyy and 12hr AM/PM).

如果数据库字段的值为'1',则格式为(mm/dd/yyyy and 24hr)

模型.py

class Report(models.Model):
    user = models.ForeignKey(User, null=False)
    manual_date = models.DateField('Another date', null=True, blank=True)
    manual_time = models.TimeField('Another time', null=True, blank=True)

class Settings(models.Model):
    date_format = models.CharField('Date format', max_length=100)
time_format = models.CharField('Time format', max_length=100)

怎么做。

谢谢

4

1 回答 1

2

我认为您最好使用 tag 在模板级别处理此转换date。例如,我看到您将dateandtime变量传递给模板。只需将它们未转换地传递,然后在模板中出现的任何地方执行以下操作:

{% if condition %}
    {{date|date:"DATE_FORMAT"}}
    {{value|time:"TIME_FORMAT"}}
{% endif %}

where"TIME_FORMAT"是您希望显示日期的实际格式,而 condition 是需要满足的条件。

如果您绝对需要在视图方法中执行此操作,那么您可以django.utils.dateformat像这样使用模块:

from django.utils.dateformat import DateFormat, TimeFormat
formatted_date = DateFormat(date_variable)
formatted_date.format('Y-m-d') # substitute this format for whatever you need
formatted_time = TimeFormat(time_variable)
formatted_date.format('h') # substitute this format for whatever you need

在任何你想格式化的地方使用该类,date_variabletime_variable为它们使用正确的格式字符串。

另外,关于您的意见的代码。你不能像你一样在视图方法的中间返回一个字符串:

if request.method == 'POST':
    if user.date_format == '0':
        date=datetime.datetime.strptime('%m/%d/%Y').strftime('%d/%m/%Y')
        return date

如果请求方法是POST. 此外,你在那里格式化什么日期?你需要格式化你的report.manual_date. 我在代码中的任何地方都没有看到。根据您的设置将我上面所说的应用于您要格式化的变量,并将该变量传递给tempalte_context您返回时。我希望它有帮助!

于 2013-05-09T13:03:56.553 回答