如何像 django 一样将日期时间格式化为字符串

use*_*573 7 python django datetime

我有一个 DatetimeField,我根据它与 now() 相比的年龄在 django admin 中突出显示。

def valid_up_to_column(self):
    now = datetime.datetime.now(datetime.timezone.utc)
    delta = (now - self.valid_up_to).seconds

    if delta > 900:
        colour = '#FF0000'  # red
    else:
        return self.valid_up_to
    return format_html('<span style="background-color: {}">{}</span>', colour, self.valid_up_to)
Run Code Online (Sandbox Code Playgroud)

当使用 format_html 时,日期时间将呈现为原始 2017-01-01 00:00+00:00 UTC 格式,但对于其他情况,Django 的区域设置将接管并根据区域设置对其进行格式化,例如 2017 年 1 月 1 日午夜。

在将日期时间传递给 format_html() 之前,如何将日期时间格式化为与 Django 相同的格式?

我尝试过使用 strftime(settings.DATETIME_FORMAT) 但这是 django DATETIME_FORMAT,与 Python 的字符串格式不同。

use*_*573 5

明白了,有一个 util format 函数,只需将 DATETIME_FORMAT 设置传递给它即可,所以如果未设置,L10N 格式化将从这里获取它。

from django.utils.dateformat import format

datetime_str = format(self.valid_up_to, settings.DATETIME_FORMAT)
Run Code Online (Sandbox Code Playgroud)