Как я могу получить все даты в этом году с первого дня по сегодняшний день? - PullRequest
0 голосов
/ 17 мая 2019

Я хочу получить всю дату с начала этого года до сегодняшнего дня в формате "% Y-% m-% d", есть ли более простой способ получить ее как daterange("2019-01-01", "2019-05-17") или что-то в этом роде?

Вот мое испытание, но я не думаю, что оно питонное

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 голосов
/ 17 мая 2019

Вот мое решение, которое требует только встроенных библиотек.

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.

0 голосов
/ 17 мая 2019

Использование модуля datetime.

Ex:

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']
0 голосов
/ 17 мая 2019

Попробуйте это.

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...