使用 strftime 更改为字符串时如何将 datetime.date 更改为 st,nd,rd,th

kws*_*314 1 python datetime strftime

ex1)
date1 = datetime.date(2021, 1, 26)
date2 ='Tuesday, January 26th, 2021'

ex2)
date1 = datetime.date(2021, 2, 21)
date2 = 'Sunday, February 21st, 2021'
Run Code Online (Sandbox Code Playgroud)

我想date1改为date2. 我应该怎么办?

我尝试了这个,但没有发现1的数字是1,2,3,例如 datetime.date(2021, 2, 21),datetime.date(2021, 2, 2),datetime.date(2021, 2 , 23)

date1 = strftime('%A, %B %dth, %Y')
Run Code Online (Sandbox Code Playgroud)

MrF*_*pes 5

您正在寻找序数词。借用序数替换,你可以使用

import datetime

def ordinal(n: int) -> str:
    """
    derive the ordinal numeral for a given number n
    """
    return f"{n:d}{'tsnrhtdd'[(n//10%10!=1)*(n%10<4)*n%10::4]}"

date1 = datetime.date(2021, 1, 26)

dayOrdinal = ordinal(date1.day)

date1_string = date1.strftime(f'%A, %B {dayOrdinal}, %Y')
# 'Tuesday, January 26th, 2021'
Run Code Online (Sandbox Code Playgroud)