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 | |