格式化并返回结果
在这一步中,你将学习如何格式化过去和未来的日期,并将它们作为字符串列表返回。
- 在
time_travel_destination(time: str, days: int)
函数内部,添加以下代码来格式化过去和未来的日期,并将它们作为列表返回:
return [past_time.strftime("%d-%m-%Y"), future_time.strftime("%d-%m-%Y")]
strftime()
方法用于将 past_time
和 future_time
的 datetime.date
对象格式化为 "dd-mm-yyyy" 格式的字符串。
- 最后,添加一个异常处理块,以捕获函数执行过程中可能发生的任何
ValueError
或 OverflowError
异常:
except (ValueError, OverflowError):
return []
如果引发了这些异常中的任何一个,函数将返回一个空列表。
你最终的 time_travel_destination(time: str, days: int)
函数应该如下所示:
import datetime
def time_travel_destination(time: str, days: int):
try:
## 从时间字符串中提取年、月、日
year, month, day = map(int, time.split("-"))
## 检查日期是否有效
datetime.date(year, month, day)
try:
## 从给定日期中减去指定的天数
past_time = datetime.date(year, month, day) - datetime.timedelta(days=days)
except OverflowError:
## 如果发生溢出错误,将 past_time 设置为可表示的最小日期
past_time = datetime.date(1, 1, 1)
## 将指定的天数加到给定日期上
future_time = datetime.date(year, month, day) + datetime.timedelta(days=days)
## 以 'dd-mm-yyyy' 格式返回过去和未来的日期
return [past_time.strftime("%d-%m-%Y"), future_time.strftime("%d-%m-%Y")]
except (ValueError, OverflowError):
## 如果发生 ValueError 或 OverflowError,返回空列表
return []
你现在已经完成了 time_travel_destination(time: str, days: int)
函数的实现。你可以通过运行 time_travel_destination.py
文件主块中的提供的示例来测试该函数。下面提供了一些示例:
print(time_travel_destination('2238-2-11', 30))
print(time_travel_destination('2238-2-11', 0))
print(time_travel_destination('2238-2-11', 100))
['12-01-2238', '13-03-2238']
['11-02-2238', '11-02-2238']
['03-11-2237', '22-05-2238']