python - 以列表年和月的形式获取日期之间的差异

标签 python datetime date

对不起我的英语。

我有两个日期(DateTime):
latest_client = Client.objects.all().latest('id').ordered_at<br/> first_client = Client.objects.order_by()[0].ordered_at

2011-04-22 15:27:28 - latest_client
2010-03-17 21:00:0 - 第一个客户端

我需要以列表年和月的形式获取日期之间的差异:
2011(04,03,02,01)
2010(12,11,10,09,08,07,06,05,04,03)

求教算法,怎么样?

最佳答案

这是一个生成器,它为您提供 datetime.date() 跨越开始和结束(含)之间的月份

from datetime import date, datetime
def spanning_months(start, end):
    assert start <= end
    current = start.year * 12 + start.month - 1
    end = end.year * 12 + end.month - 1
    while current <= end:
        yield date(current // 12, current % 12 + 1, 1)
        current += 1

演示:

>>> latest = datetime(2011, 4, 22, 15, 27, 28)
>>> first = datetime(2010, 3, 17, 21, 0, 0)
>>> for d in spanning_months(first, latest):
...     print d
2010-03-01
2010-04-01
2010-05-01
2010-06-01
2010-07-01
2010-08-01
2010-09-01
2010-10-01
2010-11-01
2010-12-01
2011-01-01
2011-02-01
2011-03-01
2011-04-01

关于python - 以列表年和月的形式获取日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5758262/

相关文章:

python - 使用 PyAudio 或类似工具播放单 channel 音频

python - 如何生成预解压列表?

python - python 中是否有用于写入文件的 COMMIT 模拟?

c# - 在 C# 中解析 Javascript 日期的最简单方法?

javascript - 对对象日期键进行排序

javascript - 重组 CSV 文件?

php - 在 PHP 中解析日期字符串

c# - 日期时间查询错误

c# - 设置在 .NET 中解析部分日期值时假定的年份

javascript - Firebase 日期存储出错