如何在12小时内显示Django时间而不是军事时间24

时间:2016-01-06 17:38:32

标签: django time

当我使用以下

created = models.DateTimeField('date published')

它显示这样的时间

23:12:06

而不是

11:12:06

我希望它在12小时内显示时间而不是24小时。当我按下现在的小部件时,时间落后4分钟。任何帮助都会被欣赏

3 个答案:

答案 0 :(得分:1)

Django有内置的日期格式,如下所示:

created = DateTimeField(input_formats=['%Y-%m-%d %I:%M %p']) 这是关于这些字母如何工作的完整备忘单: http://blog.tkbe.org/archive/date-filter-cheat-sheet/

因此,要实施12小时格式,请使用' h'或者' g'取决于你是否想要有前导零

django doc中也提到了: https://docs.djangoproject.com/en/dev/ref/forms/fields/#datetimefield

这是开发版,我不知道你正在使用哪一个

  

时间落后4分钟

您的TIME_ZONE设置是否正确?

答案 1 :(得分:0)

您可以更改时间字段的输入格式,如下所示:

created = TimeField(widget=TimeInput(format='%I:%M:%S'))

created = TimeField(input_formats=('%I:%M:%S'))

%I表示12小时时钟格式,而%H表示24小时时钟格式。

在django中我们有一些定义的格式

<强>时间

'%H:%M:%S',     # '14:30:59'
'%H:%M:%S.%f',  # '14:30:59.000200'
'%H:%M',        # '14:30'

<强>日期

'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
'%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
'%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
'%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
'%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'

<强>日期时间

'%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M:%S.%f',  # '2006-10-25 14:30:59.000200'
'%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
'%Y-%m-%d',              # '2006-10-25'
'%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
'%m/%d/%Y %H:%M:%S.%f',  # '10/25/2006 14:30:59.000200'
'%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
'%m/%d/%Y',              # '10/25/2006'
'%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
'%m/%d/%y %H:%M:%S.%f',  # '10/25/06 14:30:59.000200'
'%m/%d/%y %H:%M',        # '10/25/06 14:30'
'%m/%d/%y',              # '10/25/06'

您可以使用这些格式自定义字段

另见official doc

答案 2 :(得分:0)

添加TIME_INPUT_FORMATS = ('%I:%M %p',)

<块引用>

settings.py