python格式的日期时间与“st”,“nd”,“rd”,“th”(英文序号后缀)像PHP的“S”

2022-08-30 15:33:33

我想要一个python datetime对象来输出(并在django中使用结果),如下所示:

Thu the 2nd at 4:30

但是我发现没有办法在python中输出,,或者像我用PHP日期时间格式和字符串(他们称之为“英语序数后缀”)(http://uk.php.net/manual/en/function.date.php)。stndrdthS

有没有一种内置的方法可以在django / python中做到这一点? 不够好(http://docs.python.org/library/datetime.html#strftime-strptime-behavior)。strftime

Django有一个过滤器,它可以做我想做的事,但我想要一个函数,而不是一个过滤器,来做我想做的事。django或python函数都可以。


答案 1

django.utils.dateformat有一个函数,它接受两个参数,第一个是日期(一个[[或]]实例,其中是Python标准库中的模块),第二个是格式字符串,并返回结果格式化字符串。大写格式项目(当然,如果是格式字符串的一部分)是扩展为“st”,“nd”,“rd”或“th”的正确项目,具体取决于所讨论日期的月份日期。formatdatetime.datedatetime.datetimedatetimeS


答案 2

不知道内置,但我用了这个...

def ord(n):
    return str(n)+("th" if 4<=n%100<=20 else {1:"st",2:"nd",3:"rd"}.get(n%10, "th"))

和:

def dtStylish(dt,f):
    return dt.strftime(f).replace("{th}", ord(dt.day))

dtStylish可以按如下方式调用以获得。使用要放置月份日期的位置(“%d”python 格式代码Thu the 2nd at 4:30{th})

dtStylish(datetime(2019, 5, 2, 16, 30), '%a the {th} at %I:%M')

推荐