Py学习  »  Python

Python代码阅读(第77篇):生成指定日期之间的日期列表

FelixZzzz • 4 年前 • 360 次点击  

Python 代码阅读合集介绍: 为什么不推荐Python初学者直接看项目源码

本篇阅读的代码在日期类型上实现了类似 range 的功能,生成一个在两个指定日期之间的日期列表。

本篇阅读的代码片段来自于 30-seconds-of-python

daterange

from datetime import timedelta, date

def daterange(start, end):
  return [start + timedelta(n) for n in range(int((end - start).days))]

# EXAMPLES
from datetime import date

daterange(date(2020, 10, 1), date(2020, 10, 5)) 
# [date(2020, 10, 1), date(2020, 10, 2), date(2020, 10, 3), date(2020, 10, 4)]

daterange 函数接收一个开始日期和一个终止日期,返回这两个日期之间的日期列表,包括开始日期,不包括终止日期。

函数使用 datetime 模块里的类型和方法对日期进行处理。

  1. 首先将两个 date 类型的日期相减,得到 timedelta 类型的日期差值 timedelta = date1 - date2
  2. 然后通过 timedelta days 属性获取相差的天数。
  3. 将天数差值转换为 int 数据后,通过 range 函数生成一个从零开始的可迭代对象,并用 for 语句进行访问。
  4. 最后使用 date2 = date1 + timedelta 的运算形式,通过对开始日期加上相差日期,计算中间的日期。最后形成一个 date 类型的列表。

具体 datetime 模块的内容和相关的计算规则可以查看 Python 官方文档

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/122820