【问题标题】:get all dates between two dates in yyyy-mm-dd获取 yyyy-mm-dd 中两个日期之间的所有日期
【发布时间】:2022-07-20 23:19:53
【问题描述】:

您好,我正在尝试获取两个日期 yyyy-mm-dd 之间的所有日期, 我试过这段代码:

def date_range(future_date):
    date_list = []
    current = datetime.strptime(datetime.today().strftime('%Y-%m-%d'), '%Y-%m-%d')
    end_dt = future_date
    for n in range(int((end_dt - current).days)+1):
        d = datetime.strftime(current + timedelta(n), '%Y-%m-%d')
        d = datetime.strptime(d, '%Y-%m-%d')
        date_list.append(d)
    return date_list
end_dt = datetime.strptime('2022-08-10', '%Y-%m-%d')
print(date_range(end_dt))

但输出不是预期的形式。运行此代码后得到的输出是:

datetime.datetime(2022, 7, 20, 0, 0), datetime.datetime(2022, 7, 21, 0, 0), datetime.datetime(2022, 7, 22, 0, 0), datetime.datetime(2022, 7, 23, 0, 0), datetime.datetime(2022, 7, 24, 0, 0), datetime.datetime(2022, 7, 25, 0, 0), datetime.datetime(2022, 7, 26, 0, 0), datetime.datetime(2022, 7, 27, 0, 0), datetime.datetime(2022, 7, 28, 0, 0), datetime.datetime(2022, 7, 29, 0, 0), datetime.datetime(2022, 7, 30, 0, 0), datetime.datetime(2022, 7, 31, 0, 0), datetime.datetime(2022, 8, 1, 0, 0), datetime.datetime(2022, 8, 2, 0, 0), datetime.datetime(2022, 8, 3, 0, 0), datetime.datetime(2022, 8, 4, 0, 0), datetime.datetime(2022, 8, 5, 0, 0), datetime.datetime(2022, 8, 6, 0, 0), datetime.datetime(2022, 8, 7, 0, 0), datetime.datetime(2022, 8, 8, 0, 0), datetime.datetime(2022, 8, 9, 0, 0), datetime.datetime(2022, 8, 10, 0, 0)]

预期输出

['2022-07-20', '2022-07-21',.....,'2019-08-10']

没有时间。 不要尝试使用 pandas 来寻找与日期时间或其他相关的解决方案。

【问题讨论】:

  • 输出中的顺序有什么问题?为什么2022-07-212022-07-20 之后但在2019-08-10 之前?
  • 您将datetime 实例(由strptime 生成)添加到您的返回值,而不是YYYY-MM-DD 字符串。

标签: python datetime


【解决方案1】:

如果您不想要日期时间对象,但想要字符串,请在附加到列表之前删除 datetime.strptime 的用法

【讨论】:

    【解决方案2】:

    您可以使用datetime.strftime(your_format)

    from datetime import datetime, timedelta
    def date_range(future_date):
        date_list = []
        current = datetime.today()
        end_dt = future_date
        for n in range(int((end_dt - current).days)+1):
            d = current + timedelta(n)
            date_list.append(d.strftime('%Y-%m-%d'))
        return date_list
    end_dt = datetime.strptime('2022-08-10', '%Y-%m-%d')
    print(date_range(end_dt))
    

    ['2022-07-20', '2022-07-21', '2022-07-22', '2022-07-23', '2022-07-24', '2022-07-25', '2022-07-26', '2022-07-27', '2022-07-28', '2022-07-29', '2022-07-30', '2022-07-31', '2022-08-01', '2022-08-02', '2022-08-03', '2022-08-04', '2022-08-05', '2022-08-06', '2022-08-07', '2022-08-08', '2022-08-09']
    

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 2017-07-20
      • 2021-10-16
      • 2017-11-06
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多