在过去的日期戳和现在之间使用python获取日期

时间:2018-07-10 10:19:48

标签: python

语言 Python

我想知道是否有人可以帮我打印一些日期。

我尝试创建一个循环,在该循环中我输入日期为 01/1/2017 ,然后该循环将输出从那时到现在的每个月的第一天和最后一天

示例

01/01/2017
31/01/2017
01/02/2017
28/02/2017

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:1)

希望这会有所帮助,

代码:

from datetime import date
from dateutil.relativedelta import relativedelta
from calendar import monthrange

d1 = date(2018, 2, 26)  
d2 = date.today()

def print_month_day_range(date):
    first_day = date.replace(day = 1)
    last_day = date.replace(day = monthrange(date.year, date.month)[1])
    print (first_day.strftime("%d/%m/%Y"))
    print (last_day.strftime("%d/%m/%Y"))

print_month_day_range(d1)
while (d1 < d2):
    d1 = d1 + relativedelta(months=1)
    print_month_day_range(d1)

输出:

01/02/2018
28/02/2018
01/03/2018
31/03/2018
...
01/07/2018
31/07/2018

答案 1 :(得分:0)

您可以使用日历模块。下面是代码:

import datetime
from calendar import monthrange

strt_date = '01/1/2017'
iter_year = datetime.datetime.strptime(strt_date, '%m/%d/%Y').year
iter_month = datetime.datetime.strptime(strt_date, '%m/%d/%Y').month
cur_year = datetime.datetime.today().year
cur_month = datetime.datetime.today().month

while cur_year > iter_year or (cur_year == iter_year and iter_month <= cur_month):
    number_of_days_in_month = monthrange(iter_year, iter_month)[1]
    print '/'.join([str(iter_month) , '01', str(iter_year)])
    print '/'.join([str(iter_month), str(number_of_days_in_month), str(iter_year)])
    if iter_month == 12:
        iter_year += 1
        iter_month = 1
    else:
        iter_month += 1

答案 2 :(得分:0)

只要您提供的第一个日期始终是月份的第一天,这可能会起作用

from datetime import datetime
from datetime import timedelta

date_string = '01/01/2017'
date = datetime.strptime(date_string, '%d/%m/%Y').date()
today = datetime.now().date()

months = range(1,13)
years = range(date.year, today.year + 1)

for y in years:
    for m in months:
        new_date = date.replace(month=m, year=y)
        last_day = new_date - timedelta(days=1)
        if (date < new_date) & (new_date <= today):
            print last_day.strftime('%d/%m/%Y')
            print new_date.strftime('%d/%m/%Y')

        elif (date <= new_date) & (new_date <= today):
            print new_date.strftime('%d/%m/%Y')

答案 3 :(得分:0)

此代码将打印一年中所有月份的头几天和最后几天。 也许添加一些逻辑来迭代多年

$request->all()