使用 Python 获取当月的所有日期

man*_*man 4 python datetime calendar range python-3.x

我想像这样打印当月的所有日期

2019-06-1
2019-06-2
2019-06-3
2019-06-4
2019-06-5
...
2019-06-28
2019-06-29
2019-06-30
Run Code Online (Sandbox Code Playgroud)

我怎样才能在python中做到这一点?

sen*_*nce 12

您可以使用datetime

from datetime import date, timedelta

d1 = date(2019, 6, 1)
d2 = date(2019, 6, 30)
delta = d2 - d1

for i in range(delta.days + 1):
    print(d1 + timedelta(days=i))
Run Code Online (Sandbox Code Playgroud)

改进代码并使其独立于用户规范:

from datetime import date, timedelta, datetime

def days_cur_month():
    m = datetime.now().month
    y = datetime.now().year
    ndays = (date(y, m+1, 1) - date(y, m, 1)).days
    d1 = date(y, m, 1)
    d2 = date(y, m, ndays)
    delta = d2 - d1

    return [(d1 + timedelta(days=i)).strftime('%Y-%m-%d') for i in range(delta.days + 1)]

days_cur_month()
Run Code Online (Sandbox Code Playgroud)

你会得到:

['2019-06-01',
 '2019-06-02',
 '2019-06-03',
 '2019-06-04',
 '2019-06-05',
 '2019-06-06',
 '2019-06-07',
 '2019-06-08',
 '2019-06-09',
 '2019-06-10',
 '2019-06-11',
 '2019-06-12',
 '2019-06-13',
 '2019-06-14',
 '2019-06-15',
 '2019-06-16',
 '2019-06-17',
 '2019-06-18',
 '2019-06-19',
 '2019-06-20',
 '2019-06-21',
 '2019-06-22',
 '2019-06-23',
 '2019-06-24',
 '2019-06-25',
 '2019-06-26',
 '2019-06-27',
 '2019-06-28',
 '2019-06-29',
 '2019-06-30']
Run Code Online (Sandbox Code Playgroud)


Mur*_*nik 6

calendar.monthrange会告诉你那个月有多少天(考虑闰年等)。从那里,您将需要一堆脚手架来创建范围:

from calendar import monthrange

def allDays(y, m):
    return ['{:04d}-{:02d}-{:02d}'.format(y, m, d) for d in range(1, monthrange(y, m)[1] + 1)]
Run Code Online (Sandbox Code Playgroud)