我如何获得今年从第一天到今天的所有日期?

时间:2019-05-17 03:14:52

标签: python datetime

我想以“%Y-%m-%d”格式获取从今年年初到今天的所有日期,是否有更简单的方法来获取daterange("2019-01-01", "2019-05-17")之类的东西? >

这是我的审判,但我认为这不是pythonic

import datetime

def get_all_date_from_now_this_year():
    date_format = "%Y-%m-%d"
    day_today = datetime.datetime.today().date()
    start_date = datetime.datetime.strptime("{}-01-01".format(day_today.year), date_format).date()
    days_num  = (day_today - start_date).days

    count = 0
    all_date_list = []
    while count < days_num:
        date = (start_date + datetime.timedelta(days=count)) .strftime(date_format)
        count += 1
        all_date_list.append(date)

    return all_date_list


r_l = get_all_date_from_now_this_year()

任何评论都非常受欢迎。非常感谢。

3 个答案:

答案 0 :(得分:0)

尝试一下。

import pandas as pd
date_list=pd.date_range("2019-01-01","2019-05-17")

输出:

DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
               '2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
               '2019-01-09', '2019-01-10',
               ...
               '2019-05-08', '2019-05-09', '2019-05-10', '2019-05-11',
               '2019-05-12', '2019-05-13', '2019-05-14', '2019-05-15',
               '2019-05-16', '2019-05-17'],
              dtype='datetime64[ns]', length=137, freq='D')

答案 1 :(得分:0)

这是我的解决方案,只需要内置库即可。

from datetime import datetime, timedelta

date_fmt = '%Y-%m-%d'

td = timedelta(days=1)

def date_range(end_date, start_date):
    ed = datetime.strptime(end_date, date_fmt)
    sd = datetime.strptime(start_date, date_fmt)

    d = sd
    dates = []
    while d >= ed:
        dates.append(d.strftime(date_fmt))
        d -= td

    return dates

这应该为您提供开始日期和结束日期之间的所有日期,包括YYYY-mm-dd格式。

答案 2 :(得分:0)

使用datetime模块。

例如:

import datetime

def get_all_date_from_now_this_year(start):
    today = datetime.datetime.now()
    start = datetime.datetime.strptime(start, "%Y-%m-%d")
    result = []
    while today >= start:
        result.append(start.strftime("%Y-%m-%d"))
        start = start + datetime.timedelta(days=1)
    return result


start = "2019-01-01"
print(get_all_date_from_now_this_year(start))

输出:

['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04', ....'2019-05-15', '2019-05-16', '2019-05-17']