Python datetime模块应用案例

在这里插入图片描述

要查看今天是一年中的第几天以及本周是一年中的第几周,可以使用 Python 的 datetime 模块轻松实现。以下是详细方法和代码示例:

方法说明:

  1. 一年中的第几天

    • 使用 datetime.timetuple().tm_yday 属性
    • 返回 1-366 之间的整数(1 表示 1 月 1 日)
  2. 一年中的第几周

    • 使用 datetime.isocalendar()[1](ISO 标准周数,周一作为一周开始)
    • datetime.strftime("%U")(周日作为一周开始,00-53)
    • datetime.strftime("%W")(周一作为一周开始,00-53)

完整代码:

from datetime import datetime

# 获取当前日期
today = datetime.now()

# 1. 计算今天是一年中的第几天
day_of_year = today.timetuple().tm_yday
print(f"今天是一年中的第 {day_of_year} 天")

# 2. 计算本周是一年中的第几周(推荐使用 ISO 标准)
week_iso = today.isocalendar()[1]  # ISO 标准周数(周一作为一周开始)
print(f"本周是 ISO 标准下的第 {week_iso} 周")

# 3. 其他周数计算方式(可选)
week_sun_start = int(today.strftime("%U"))  # 周日作为一周开始(00-53)
week_mon_start = int(today.strftime("%W"))  # 周一作为一周开始(00-53)

print(f"以周日开始计算:第 {week_sun_start} 周")
print(f"以周一开始计算:第 {week_mon_start} 周")

输出示例(假设今天是 2025 年 6 月 17 日):

今天是一年中的第 168 天
本周是 ISO 标准下的第 25 周
以周日开始计算:第 25 周
以周一开始计算:第 25 周

注意事项:

  1. ISO 周数标准

    • 每周从星期一开始
    • 第一周是包含当年第一个星期四的那周
    • 一年的最后一周是包含当年最后一个星期四的那周
  2. 不同标准的差异

    • isocalendar()%W 都以周一开始,但 ISO 标准对跨年周的处理更符合国际规范
    • %U(周日开始)美国常用
    • 推荐使用 isocalendar() 获取国际通用周数
  3. 跨年情况处理

    # 处理跨年日期(如2025年12月31日)
    new_years_eve = datetime(2025, 12, 31)
    year, week, day = new_years_eve.isocalendar()
    print(f"{new_years_eve.date()} 属于第 {week} 周(ISO 标准)")
    # 输出:2025-12-31 属于第 1 周(ISO 标准)因为这天属于2026年的第一周
    

最佳实践:

from datetime import datetime

def get_date_info():
    today = datetime.now()
    return {
        "date": today.date(),
        "day_of_year": today.timetuple().tm_yday,
        "iso_week": today.isocalendar()[1],
        "iso_year": today.isocalendar()[0],
        "weekday": today.isocalendar()[2]  # 周一=1, 周日=7
    }

# 调用示例
info = get_date_info()
print(f"日期: {info['date']}")
print(f"年度第 {info['day_of_year']} 天")
print(f"ISO 周: {info['iso_year']}-W{info['iso_week']:02d}")
print(f"星期: {info['weekday']}")

这些方法可以准确计算任何日期在一年中的位置,满足不同国际标准的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值