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

Ngày Thứ Mấy Trong Năm (Day of Year) Trong Python

Cho ngày theo định dạng "YYYY-MM-DD". Trả về thứ tự ngày trong năm (1-366). Ví dụ: "2019-02-10" → 41 (ngày thứ 41 của năm 2019).

Thuật toán

  1. Mảng ngày tích lũy mỗi tháng: [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] (năm thường)
  2. Parse year, month, day từ chuỗi
  3. Kiểm tra năm nhuận: year % 400 == 0 hoặc (year % 4 == 0 and year % 100 != 0)
  4. Nếu năm nhuận và tháng > 2: cộng thêm 1
  5. Kết quả = days[month-1] + day

Ví dụ (Python)

class Solution(object):
    def dayOfYear(self, date):
        # Ngày tích lũy cuối mỗi tháng (năm thường)
        days = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
        
        year, month, day = map(int, date.split('-'))
        
        # Kiểm tra năm nhuận
        is_leap = (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0)
        
        result = days[month - 1] + day
        if is_leap and month > 2:
            result += 1
        
        return result

ob1 = Solution()
print(ob1.dayOfYear("2019-02-10"))  # 41
print(ob1.dayOfYear("2020-03-01"))  # 61 (2020 là năm nhuận)

Cách dùng thư viện chuẩn (Khuyên dùng)

from datetime import datetime

def dayOfYear(date):
    dt = datetime.strptime(date, "%Y-%m-%d")
    return dt.timetuple().tm_yday

print(dayOfYear("2019-02-10"))  # 41
print(dayOfYear("2020-03-01"))  # 61

Độ phức tạp

  • Thời gian: O(1)
  • Không gian: O(1)

Đầu vào / Đầu ra

Input:  "2019-02-10"
Output: 41