如何将格式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)
怎么做。
由于
答案 0 :(得分:2)
我认为您最好使用标记date
在模板级别处理此转换。例如,我看到您将date
和time
变量传递给模板。只需将它们转换为未转换的,然后在模板中的任何位置执行此操作:
{% if condition %}
{{date|date:"DATE_FORMAT"}}
{{value|time:"TIME_FORMAT"}}
{% endif %}
其中"TIME_FORMAT"
是您希望显示日期的实际格式,条件是需要满足的条件。
如果你绝对需要在view方法中执行此操作,那么你可以像这样使用模块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_variable
和time_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
。
我希望它有所帮助!