首页 > 解决方案 > 是否有与 Java 的 Calendar.DAY_OF_WEEK_IN_MONTH 等效的 Python 版本?

问题描述

我的目标是找出一个月中的第 n 天是给定日期?例如,我希望能够拥有以下内容:

Input

2020 年 12 月 21 日

Output

本月第三个星期一

Java 的日历库正是我所需要的,如此处所示。寻找一个 Python 等价物或一个已经存在的指向相同的答案(我尝试了很多寻找但徒劳无功。所以我放弃了,作为最后的手段在这里问)。

标签: pythonpython-3.xdatetime

解决方案


AFAIK 没有内置函数,但它很容易实现:

from datetime import date
from math import ceil

d = date.fromisoformat('2020-12-21')
d.strftime(f"{(dom := (ceil(d.day / 7)))}{'rd' if dom > 1 else 'st'} %A of this Month")

当然,对于字符串表示,您需要考虑几个序数指示符(st、nd、rd、th)。另一方面,如果您只想获取月份的数字,您可以使用:

ceil(d.day / 7)

推荐阅读