Spaces:
Runtime error
Runtime error
| from datetime import date as dt_date, timedelta | |
| class Date: | |
| def __init__(self, *args): | |
| if len(args) == 0: | |
| self._date = dt_date.today() | |
| elif len(args) == 1: | |
| s = args[0] | |
| if isinstance(s, str): | |
| if 'T' in s: | |
| date_part = s.split('T')[0] | |
| else: | |
| date_part = s | |
| self._date = dt_date.fromisoformat(date_part) | |
| else: | |
| raise TypeError("Invalid argument type. Expected string.") | |
| elif len(args) == 3: | |
| year, month, day = args | |
| self._date = dt_date(year, month, day) | |
| else: | |
| raise TypeError("Date() requires 0, 1, or 3 arguments") | |
| def __eq__(self, other): | |
| if isinstance(other, Date): | |
| return self._date == other._date | |
| return False | |
| def __add__(self, days): | |
| if isinstance(days, int): | |
| new_date = self._date + timedelta(days=days) | |
| return Date(new_date.year, new_date.month, new_date.day) | |
| else: | |
| return NotImplemented | |
| __radd__ = __add__ | |
| def __repr__(self): | |
| return f"Date({self._date.year}, {self._date.month}, {self._date.day})" | |
| def __str__(self): | |
| return f"{self._date.year:04}-{self._date.month:02}-{self._date.day:02}" | |
| # 小于 | |
| def __lt__(self, other): | |
| if isinstance(other, Date): | |
| return self._date < other._date | |
| return False | |
| # 小于等于 | |
| def __le__(self, other): | |
| if isinstance(other, Date): | |
| return self._date <= other._date | |
| return False | |
| # 大于 | |
| def __gt__(self, other): | |
| if isinstance(other, Date): | |
| return self._date > other._date | |
| return False | |
| # 大于等于 | |
| def __ge__(self, other): | |
| if isinstance(other, Date): | |
| return self._date >= other._date | |
| return False | |
| if __name__ == "__main__": | |
| date1 = Date() # 返回今天日期 | |
| date2 = Date("2025-01-28") | |
| date3 = Date(2025, 1, 28) | |
| date4 = Date("2025-01-31T13:33:38.548Z") # 删除所有时间信息,仅保留日期 | |
| print(date2 == date3) # True | |
| date4 = Date("2025-01-29") | |
| print(date2 + 1 == date4) | |
| print(date1, date2, date3, date4) | |
| print(date1 < date2) # False | |