到当前日期的每周一和周日、每月第一天和最后一天日期的获取

由于项目的运营报表有新需求,而且之间一直用node.js来做,在操作数据库上不是很方便。所以现在我转成了用python来做运行报表,跟node.js比起来,感觉python不止方便了一点。下面两个方法,其功能如下:
1.通过某一周的周一和周日的日期,获取这一周到目前每周周一和周末的日期,以字符串的格式存在一个二维列表中
2.通过某一月的第一天和最后一天的日期,获取这一月到目前每月第一天和最后一天的日期,以字符串的格式存在一个二维列表中

import datetime
import calendar

weekDateList = [['2017-05-01', '2017-05-07']]  # 存储从2017-05-01起到目前每周一和周末的日期
MonthDateList = [['2017-05-01', '2017-05-31']]  # 存储从2017-05-01起到上月每月第一天一和最后一天周末的日期
nowdate = datetime.datetime.now()


def getDate(dateStr):  #  返回datetime格式的日期
    year = int(dateStr[0:4])
    month = int(dateStr[5:7])
    day = int(dateStr[8:10])
    return datetime.datetime(year, month, day)


def getWeekDateList(List):
    firstdate = getDate(List[-1][0])
    lastdate = getDate(List[-1][1])

    date2 = lastdate + datetime.timedelta(days=7)  # 周末
    while date2 > nowdate:
        break
    else:
        date1 = firstdate + datetime.timedelta(days=7)  # 周一
        List.append([date1.strftime('%Y-%m-%d'),  date2.strftime('%Y-%m-%d')])
        getWeekDateList(List)


def getMonthDateList(List):
    lastdate = getDate(List[-1][1])
    days = calendar.monthrange(lastdate.year, lastdate.month+1)[1]  # 获取下个月的天数
    date2 = lastdate + datetime.timedelta(days=days)  # 月末
    while date2 > nowdate:
        break
    else:
        date1 = lastdate + datetime.timedelta(days=1)  # 月初
        List.append([date1.strftime('%Y-%m-%d'),  date2.strftime('%Y-%m-%d')])
        getMonthDateList(List)


getWeekDateList(weekDateList)
for i in weekDateList:
    print(i)
print("----------------------------------------")
getMonthDateList(MonthDateList)
for i in MonthDateList:
    print(i)

运行结果如下:
每周日期:
这里写图片描述
每月日期:
这里写图片描述

另:当前的日期是2017/12/14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值