簡體   English   中英

今年第一天到今天如何才能獲得今年的所有約會?

[英]How can I get all date this year from first day to today?

我希望從今年年初到今天以“%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()

任何評論都非常受歡迎。 萬分謝意。

嘗試這個。

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

OUTPUT:

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')

這是我的解決方案,只需要內置庫。

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的格式為您提供開始日期和結束日期之間的所有日期。

使用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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM