Django管理后台DateTimeField显示24小时格式时间

9

我在谷歌上搜索了,但没有找到解决方案。在 Django 的管理界面上,我展示了带有时间的 开始日期结束日期。但是时间是以 24 小时 格式显示的,我想将其显示为 12 小时 格式。

class CompanyEvent(models.Model):
    title = models.CharField(max_length=255)
    date_start = models.DateTimeField('Start Date')
    date_end = models.DateTimeField('End Date')
    notes = models.CharField(max_length=255)

    class Meta:
        verbose_name = u'Company Event'
        verbose_name_plural = u'Company Events'

    def __unicode__(self):
        return "%s (%s : %s)" % (self.title, self.date_start.strftime('%m/%d/%Y'), self.date_end)

我还发现了这篇文章,但它并没有对我有所帮助。
我是pythondjango的新手,请帮忙。 屏幕截图

我认为它捕捉了您计算机的默认设置。因此,如果您的地区是24小时制,它将显示为这样。您尝试更改过您的地区格式吗? - Walucas
3个回答

18

这是Django设置的问题,而不是模型问题:请查看设置文档

检查您在MyProject/MySite/settings.py中的TIME_INPUT_FORMATS,如果需要,请添加此内容:

TIME_INPUT_FORMATS = [
    '%I:%M:%S %p',  # 6:22:44 PM
    '%I:%M %p',  # 6:22 PM
    '%I %p',  # 6 PM
    '%H:%M:%S',     # '14:30:59'
    '%H:%M:%S.%f',  # '14:30:59.000200'
    '%H:%M',        # '14:30'
]
如果更改列表页面的时间格式仍然不正确,请检查您的LANGUAGE_CODEUSE_L10N设置。

7
请看 Django文档,你将了解格式如下:
'%Y-%m-%d %H:%M:%S'

其中%H表示小时,采用24小时制并在前面补0,如果要采用12小时制,请使用%h

因此您需要使用格式为-'%Y-%m-%d %h:%M:%S'


3

默认情况下,Django会显示24小时格式,如果您想自定义时间格式,就需要指定12小时制。如果有问题请告知。

class CompanyEvent(models.Model):
title = models.CharField(max_length=255)
date_start = models.DateTimeField('Start Date')
date_end = models.DateTimeField('End Date')
notes = models.CharField(max_length=255)

class Meta:
    verbose_name = u'Company Event'
    verbose_name_plural = u'Company Events'

def __unicode__(self):
    return "%s (%s : %s)" % (self.title, self.date_start.strftime('%m/%d/%Y %I:%M %p'), self.date_end)

1
它在列表页面运行良好,但在详细信息或编辑页面上无法正常工作。 - Amitesh Kumar
1
请查看我提供的图片,那张图片是编辑视图,我在那里得到了24小时制的时间格式。 - Amitesh Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接