由于项目的运营报表有新需求,而且之间一直用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