【问题标题】:convert date and time format in django在 django 中转换日期和时间格式
【发布时间】:2013-05-08 16:32:58
【问题描述】:

如何将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)

models.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)

怎么做。

谢谢

【问题讨论】:

  • 你想要这个视图吗?还是模板?
  • 我想要在views.py中
  • 你能在你的模型中添加一些关于代码的信息,也许在你看来?所以我们可以做点什么?
  • @Paulo Bu 更新了我的观点和模型
  • @karthikr 知道如何在视图中转换它

标签: django django-models django-views


【解决方案1】:

我认为您最好使用标签date 在模板级别处理此转换。例如,我看到您将 datetime 变量传递给模板。只需将它们未转换并稍后在模板中出现的任何位置传递即可:

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

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

如果您绝对需要在视图方法中执行此操作,那么您可以像这样使用模块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。 希望对你有帮助!

【讨论】:

  • ,我可以接受你的回答,但是我对视图做了一些更改,并在模板中获取了日期和时间变量进行显示。是否可以在表单中传递该变量,以便格式表单字段将发生变化。我更新了有问题的视图和表单。你能给我一些提示
  • 我想你在另一个问题中问过这个问题,有人回答了你。那没有用吗?如果不?向我推荐那个问题,因为我猜这是一个不同的话题。可以放链接吗?
  • 我正在分享那个链接两个链接stackoverflow.com/questions/16461862/…
  • Paul,参考上面的帖子,我可以在视图中编写这个模块“django.utils.dateformat”
  • 是的,你可以。 from django.utils.dateformat import DateFormat.
猜你喜欢
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
相关资源
最近更新 更多