Hướng dẫn python check date in range - ngày kiểm tra python trong phạm vi

Tôi có một biến ngày: 2011-01-15 và tôi muốn lấy lại Boolean nếu ngày nói là trong vòng 3 ngày kể từ hôm nay. Tôi không hoàn toàn chắc chắn làm thế nào để xây dựng điều này trong Python. Tôi chỉ xử lý ngày, không phải DateTime.

Ví dụ làm việc của tôi là một "thời kỳ ân sủng". Người dùng đăng nhập vào trang web của tôi và nếu thời gian ân hạn trong vòng 3 ngày kể từ ngày hôm nay, các tập lệnh bổ sung, v.v. sẽ được bỏ qua cho người dùng đó.

Tôi biết bạn có thể làm một số điều lạ mắt/phức tạp trong [các] mô -đun ngày của Python nhưng tôi không chắc chắn nơi nào nên tìm.

hỏi ngày 14 tháng 1 năm 2011 lúc 20:29Jan 14, 2011 at 20:29

Ben Keatben KeatBen Keating

7.8569 huy hiệu vàng36 Huy hiệu bạc37 Huy hiệu đồng9 gold badges36 silver badges37 bronze badges

Trong Python để kiểm tra một phạm vi bạn có thể sử dụng a > import datetime >>> today = datetime.date.today[] >>> margin = datetime.timedelta[days = 3] >>> today - margin > from datetime import date, timedelta >>> date[2011, 1, 15] - date.today[] datetime.timedelta[1] >>> date[2011, 1, 15] - date.today[] < timedelta[days = 3] True >>> date[2011, 1, 18] - date.today[] < timedelta[days = 3] False

Đối với "nơi nhìn": Tài liệu chính thức là tuyệt vời.

Đã trả lời ngày 14 tháng 1 năm 2011 lúc 20:33Jan 14, 2011 at 20:33

3

Những người khác đã trả lời đầy đủ hơn, vì vậy không cần bỏ phiếu cho câu trả lời này. [Sử dụng kỹ thuật được hiển thị trong câu trả lời của Mark Byers; +1 cho anh ta].
[Uses technique shown in Mark Byers' answer; +1 to him].

import datetime as dt

def within_days_from_today[the_date, num_days=7]:
    '''
        return True if date between today and `num_days` from today
        return False otherwise

        >>> today = dt.date.today[]
        >>> within_days_from_today[today - dt.timedelta[days=1], num_days=3]
        False
        >>> within_days_from_today[dt.date.today[], num_days=3]
        True
        >>> within_days_from_today[today + dt.timedelta[days=1], num_days=3]
        True
        >>> within_days_from_today[today + dt.timedelta[days=2], num_days=3]
        True
        >>> within_days_from_today[today + dt.timedelta[days=3], num_days=3]
        True
        >>> within_days_from_today[today + dt.timedelta[days=4], num_days=3]
        False
    '''
    lower_limit = dt.date.today[]
    upper_limit = lower_limit + dt.timedelta[days=num_days]
    if lower_limit 

Bài Viết Liên Quan

Chủ Đề