Python如何打印“Saturday 8th of February 2020 07:46:40 PM CDT”格式时间

Python3.9+ 原生实现方案
Windows环境先执行安装时区依赖:pip install tzdata
Linux/macOS无需额外安装依赖。
from datetime import datetime from zoneinfo import ZoneInfo def get_ordinal_suffix(day: int) -> str: # 11、12、13统一用th后缀 if 11 <= day <= 13: return 'th' # 其余按个位匹配后缀 return {1: 'st', 2: 'nd', 3: 'rd'}.get(day % 10, 'th') # 指定美国中部时区,自动适配夏令时(CDT)/冬令时(CST) central_tz = ZoneInfo("America/Chicago") # 示例:生成目标指定日期,若要取当前时间替换为 dt = datetime.now(tz=central_tz) dt = datetime(2020, 2, 8, 19, 46, 40, tzinfo=central_tz) ordinal_day = f"{dt.day}{get_ordinal_suffix(dt.day)}" result = dt.strftime(f"%A {ordinal_day} of %B %Y %I:%M:%S %p %Z") print(result)
输出结果:Saturday 8th of February 2020 07:46:40 PM CDT
Python3.8及更低版本兼容方案
需先安装pytz时区库:pip install pytz
from datetime import datetime import pytz def get_ordinal_suffix(day: int) -> str: if 11 <= day <= 13: return 'th' return {1: 'st', 2: 'nd', 3: 'rd'}.get(day % 10, 'th') central_tz = pytz.timezone("America/Chicago") # 示例指定日期,取当前时间替换为 dt = datetime.now(tz=central_tz) dt = central_tz.localize(datetime(2020, 2, 8, 19, 46, 40)) ordinal_day = f"{dt.day}{get_ordinal_suffix(dt.day)}" result = dt.strftime(f"%A {ordinal_day} of %B %Y %I:%M:%S %p %Z") print(result)
注意事项
- 不要手动固定时区名称为CDT,指定
America/Chicago时区会自动根据日期切换冬夏令时标识,避免时间出错 - 序数后缀逻辑已覆盖所有合法日期场景,无需额外判断
内容的提问来源于stack exchange,提问作者iksskjj
相关产品推荐
相关产品推荐

