社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

FelixZzzz • 3 年前 • 333 次点击  

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
 
333 次点击