Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách lấy tuần hiện tại trong Python

Dùng phương thức isocalendar() của date hoặc datetime để lấy năm, số tuần, ngày trong tuần theo tiêu chuẩn ISO 8601 (tuần bắt đầu thứ 2).

Ví dụ cơ bản

import datetime

today = datetime.date.today()
year, week_num, day_of_week = today.isocalendar()

print(f"Tuần #{week_num} của năm {year}")
print(f"Thứ trong tuần: {day_of_week} (1=Thứ 2, 7=Chủ Nhật)")

Kết quả

Tuần #1 của năm 2018
Thứ trong tuần: 1

Lấy tuần cho ngày cụ thể

dt = datetime.date(2024, 12, 31)
year, week, dow = dt.isocalendar()
print(f"{dt} -> Tuần {week}/{year}, Thứ {dow}")
# 2024-12-31 -> Tuần 1/2025, Thứ 2 (ISO week date)

Lưu ý quan trọng

  • ISO week date: Tuần đầu tiên của năm là tuần chứa thứ 4 đầu tiên của năm. Do đó, 31/12 có thể thuộc tuần 1 của năm sau.
  • day_of_week: 1=Thứ 2, ..., 7=Chủ Nhật.
  • Python 3.9+: isocalendar() trả về namedtuple có attribute .year, .week, .weekday.

Cách cũ (strftime) - Không khuyến nghị

# %U: tuần bắt đầu CN, %W: tuần bắt đầu T2
print(today.strftime("%U"))  # Số tuần (CN đầu)
print(today.strftime("%W"))  # Số tuần (T2 đầu)

Cách này kém chuẩn ISO, dễ nhầm lẫn.