【问题标题】:Change DateTimeField FORMAT in Django version 3.2.2在 Django 3.2.2 版中更改 DateTimeField 格式
【发布时间】:2021-09-05 03:56:11
【问题描述】:

我正在尝试更改项目中所有日期时间对象的 DateTime 格式。 我要格式化:

    21-06-2021 14:02:12

我的设置

DATETIME_FORMAT = '%d-%m-%Y %H:%M:%S'
TIME_ZONE = 'Africa/Tunis'
USE_I18N = True
USE_L10N = False  
USE_TZ = True 

结果:

%21-%06-%2021 %14:%Jun:%st

【问题讨论】:

  • DATETIME_FORMAT 不使用 Python 的 datetime 模块语法,请查看documentation 了解哪些类型的格式字符串是可接受的。

标签: django datetime format python-datetime django-3.2


【解决方案1】:

DATETIME_FORMAT setting [Django-doc] 适用于格式规范,就像 PHP 那样。

所以作为格式,你应该使用:

DATETIME_FORMAT = 'd-m-Y H:i:s'

注意formatting is slightly different [PHP datetime specs]. PHP 使用i 表示分钟;以及 小写 s 秒:

format character Description Example
i Minutes with leading zeros 00 to 59
s Seconds with leading zeros 00 through 59

Django documentation 还具有列为@AbdulAzizBarkat says 的格式字符。

【讨论】:

  • 这个链接比 PHP 更适合综合列表:docs.djangoproject.com/en/3.2/ref/templates/builtins/… :) 因为文档指出:“使用与 PHP 的 date() 函数类似的格式,但有一些区别”
  • 感谢两位的帮助。我检查了 django 文档和可用的格式字符串。新格式为:DATETIME_FORMAT = '%d-%m-%Y %H:%i:%s'。有用。但我不知道为什么我的模板中的结果是:%21-%06-%2021 %14:%28:%18 with %.
  • @JiheneBengamra:因为它不会将 % 解析为变量的前缀,而只是将要产生的字符。因此,它将生成一个带有%、月份日期(d)、21 等的字符串。但是 Django,DateTimeFIeld input_formats` 使用百分比格式(docs.djangoproject.com/en/dev/ref/forms/fields/#datetimefield),所以它使用两种日期时间格式,因此会造成混淆。
猜你喜欢
  • 1970-01-01
  • 2013-10-02
  • 2014-07-16
  • 2015-05-18
  • 1970-01-01
  • 2021-07-06
  • 2016-09-20
  • 2015-01-11
  • 1970-01-01
相关资源
最近更新 更多