话不多说,有图有源码
1.效果图
2.源码
2.1)前端页面test_daterange.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="/static/js/jQuery-2.2.0.min.js" ></script>
<script language="javascript" type="text/javascript" src="/static/lib/My97DatePicker/WdatePicker.js"></script>
<style>
.bold-red {
color:red;
}
.bold-input {
font-weight: bold;
font-size: 24px;
text-align: center;
color:blue;
width:460px;
}
.bold-button {
font-weight: bold;
font-size: 18px;
text-align: center;
color:green;
}
.div-top-10 {
position: relative;
top: 10px;
left: 100px
}
table {
border-collapse: collapse;
width: 750px;
text-align: left;
font-family: Arial, sans-serif;
font-size: 16px;
}
td, th {
border: 1px solid #ddd;
padding: 8px;
}
th {
background-color: #f2f2f2;
color: #333;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
</style>
</head>
<body>
<div class="div-top-10">
<h1 class="bold-red">Ewangda 企业经营数据报表专家</h1>
<h4>选择日期:<input class="Wdate bold-input" type="text" onClick="WdatePicker({el:this,dateFmt:'yyyy-MM-dd'})" name="getdate" id="getdate" class="form-control"> <button id="btn_hello" class="bold-button">获取日期范围</button></h4>
<table>
<tr><th>要查看的范围</th><th>开始日期</th><th>截止日期</th></tr>
<tr><td>今天</td><td id="tdb"></td><td id="tde"></td></tr>
<tr><td>本周</td><td id="twb"></td><td id="twe"></td></tr>
<tr><td>本月</td><td id="tmb"></td><td id="tme"></td></tr>
<tr><td>本季</td><td id="tqb"></td><td id="tqe"></td></tr>
<tr><td>今年</td><td id="tyb"></td><td id="tye"></td></tr>
<tr><td> </td><td></td><td></td></tr>
<tr><td>明天</td><td id="ndb"></td><td id="nde"></td></tr>
<tr><td>下周</td><td id="nwb"></td><td id="nwe"></td></tr>
<tr><td>下月</td><td id="nmb"></td><td id="nme"></td></tr>
<tr><td>下季</td><td id="nqb"></td><td id="nqe"></td></tr>
<tr><td>明年</td><td id="nyb"></td><td id="nye"></td></tr>
<tr><td> </td><td></td><td></td></tr>
<tr><td>昨天</td><td id="ldb"></td><td id="lde"></td></tr>
<tr><td>上周</td><td id="lwb"></td><td id="lwe"></td></tr>
<tr><td>上月</td><td id="lmb"></td><td id="lme"></td></tr>
<tr><td>上季</td><td id="lqb"></td><td id="lqe"></td></tr>
<tr><td>去年</td><td id="lyb"></td><td id="lye"></td></tr>
</table>
</div>
</body>
<script>
$("#btn_hello").click(function () {
//-----gtj 通过ajax 获取后台数据
$.ajax({
url: '/',
type: "post",
dataType: "json",
data:{
getdate: $('#getdate').val(),
},
success: function(rs){
//-------从后台获得的信息
data = rs.data;
console.log(data);
$("#tdb").text(data.tdb);
$("#tde").text(data.tde);
$("#twb").text(data.twb);
$("#twe").text(data.twe);
$("#tmb").text(data.tmb);
$("#tme").text(data.tme);
$("#tqb").text(data.tqb);
$("#tqe").text(data.tqe);
$("#tyb").text(data.tyb);
$("#tye").text(data.tye);
$("#ndb").text(data.ndb);
$("#nde").text(data.nde);
$("#nwb").text(data.nwb);
$("#nwe").text(data.nwe);
$("#nmb").text(data.nmb);
$("#nme").text(data.nme);
$("#nqb").text(data.nqb);
$("#nqe").text(data.nqe);
$("#nyb").text(data.nyb);
$("#nye").text(data.nye);
$("#ldb").text(data.ldb);
$("#lde").text(data.lde);
$("#lwb").text(data.lwb);
$("#lwe").text(data.lwe);
$("#lmb").text(data.lmb);
$("#lme").text(data.lme);
$("#lqb").text(data.lqb);
$("#lqe").text(data.lqe);
$("#lyb").text(data.lyb);
$("#lye").text(data.lye);
},
error: function(rs){
console.log(rs)
}
});
})
</script>
</html>
2.2)后端test_daterange.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ---------开发于2024-05-----------
__author__ = '阿桂天山'
# =========================================================================================
from flask import Flask, jsonify, render_template,request
from utils import restful
import pandas as pd
from datetime import date,datetime,timedelta
from dateutil.relativedelta import relativedelta
app = Flask(__name__)
@app.route('/', methods=['GET','POST'])
def test_daterange():
if request.method=='GET':
return render_template('test_daterange.html')
else:
values = request.values
getdate = values.get('getdate')
print(type(getdate),getdate)
data ={}
data['tdb'] = date.today().strftime('%Y-%m-%d')
data['tde'] = date.today().strftime('%Y-%m-%d')
#--------'本周'------------------
def get_current_week_dates():
today = datetime.strptime(getdate, '%Y-%m-%d')
first_day_of_week = today - relativedelta(days=today.weekday())
last_day_of_week = first_day_of_week + relativedelta(days=6)
return first_day_of_week.date().strftime('%Y-%m-%d'), last_day_of_week.date().strftime('%Y-%m-%d')
data['twb'], data['twe'] = get_current_week_dates()
#--------'本月'--------------------
this_month = datetime.strptime(getdate, '%Y-%m-%d')
next_month = datetime.strptime(getdate, '%Y-%m-%d') + relativedelta(months=1)
data['tmb'] = (date(this_month.year, this_month.month, 1)).strftime('%Y-%m-%d')
data['tme'] = (date(next_month.year, next_month.month, 1) - relativedelta(days=1)).strftime('%Y-%m-%d')
#-----------'本季'--------------------------
def get_quarter_range(date):
# 获取当前季度的第一天
first_day_of_quarter = date.replace(month=1 + ((date.month - 1) // 3) * 3, day=1)
# 获取当前季度的最后一天
last_day_of_quarter = first_day_of_quarter + pd.offsets.QuarterEnd(0)
return first_day_of_quarter.date().strftime('%Y-%m-%d'), last_day_of_quarter.date().strftime(
'%Y-%m-%d')
today = datetime.strptime(getdate, '%Y-%m-%d')
data['tqb'], data['tqe'] = get_quarter_range(today)
#------------'今年'----------------------
today = datetime.strptime(getdate, '%Y-%m-%d')
data['tyb'] = (date(today.year, 1, 1)).strftime('%Y-%m-%d')
data['tye'] = (date(today.year, 12, 31)).strftime('%Y-%m-%d')
#------------'明天'-----------------
today = datetime.strptime(getdate, '%Y-%m-%d')
newday = today + timedelta(days=1)
data['ndb'] = newday.strftime('%Y-%m-%d')
data['nde'] = newday.strftime('%Y-%m-%d')
#------------'下周':
def get_next_week_dates(date):
last_week_same_day = date + relativedelta(weeks=1)
last_week_start = last_week_same_day - timedelta(days=last_week_same_day.weekday())
last_week_end = last_week_start + timedelta(days=6)
return last_week_start, last_week_end
today = datetime.strptime(getdate, '%Y-%m-%d')
next_week_start, next_week_end = get_next_week_dates(today)
data['nwb'] = next_week_start.strftime('%Y-%m-%d')
data['nwe'] = next_week_end.strftime('%Y-%m-%d')
#------------'下月':
today = datetime.strptime(getdate, '%Y-%m-%d')
next_month = today + relativedelta(months=1)
next_last_month = today + relativedelta(months=2)
data['nmb'] = (date(next_month.year, next_month.month, 1)).strftime('%Y-%m-%d')
data['nme'] = (date(next_last_month.year, next_last_month.month, 1) - relativedelta(days=1)).strftime(
'%Y-%m-%d')
#------------'下季':
def get_next_quarter_range(date):
# 得到下季度的第一天
first_day_of_previous_quarter = datetime(date.year, (date.month - 1)//3 * 3 + 1,
1) + relativedelta(months=3)
# 得到下季度的最后一天
last_day_of_previous_quarter = first_day_of_previous_quarter + relativedelta(months=3, days=-1)
return first_day_of_previous_quarter.date().strftime(
'%Y-%m-%d'), last_day_of_previous_quarter.date().strftime('%Y-%m-%d')
today = datetime.strptime(getdate, '%Y-%m-%d')
data['nqb'], data['nqe'] = get_next_quarter_range(today)
#------------'明年':
today = datetime.strptime(getdate, '%Y-%m-%d') + relativedelta(years=1)
data['nyb'] = (date(today.year, 1, 1)).strftime('%Y-%m-%d')
data['nye'] = (date(today.year, 12, 31)).strftime('%Y-%m-%d')
#
#--------------'昨天':
today = datetime.strptime(getdate, '%Y-%m-%d')
newday = today - timedelta(days=1)
data['ldb'] = newday.strftime('%Y-%m-%d')
data['lde'] = newday.strftime('%Y-%m-%d')
#-----------------'上周':
def get_last_week_dates(date):
last_week_same_day = date - relativedelta(weeks=1)
last_week_start = last_week_same_day - timedelta(days=last_week_same_day.weekday())
last_week_end = last_week_start + timedelta(days=6)
return last_week_start, last_week_end
today = datetime.strptime(getdate, '%Y-%m-%d')
last_week_start, last_week_end = get_last_week_dates(today)
data['lwb'] = last_week_start.strftime('%Y-%m-%d')
data['lwe'] = last_week_end.strftime('%Y-%m-%d')
#------------------------'上月':
today = datetime.strptime(getdate, '%Y-%m-%d')
this_month = today
last_month = today - relativedelta(months=1)
data['lmb'] = (date(last_month.year, last_month.month, 1)).strftime('%Y-%m-%d')
data['lme'] = (date(this_month.year, this_month.month, 1) - relativedelta(days=1)).strftime('%Y-%m-%d')
#------------------------'上季':
def get_previous_quarter_dates(date):
# 计算指定日期所在季度的第一天
first_day_of_quarter = datetime(date.year, (date.month - 1) // 3 * 3 + 1, 1)
# 计算上一季度的第一天
first_day_of_previous_quarter = first_day_of_quarter - relativedelta(months=3)
# 上一季度的起始日期
start_date = first_day_of_previous_quarter.strftime('%Y-%m-%d')
# 上一季度的结束日期
end_date = (first_day_of_quarter - timedelta(days=1)).strftime('%Y-%m-%d')
return start_date, end_date
today = datetime.strptime(getdate, '%Y-%m-%d')
data['lqb'], data['lqe'] = get_previous_quarter_dates(today)
#---------------------------'去年':
today = date.today() - relativedelta(years=1)
data['lyb'] = (date(today.year, 1, 1)).strftime('%Y-%m-%d')
data['lye'] = (date(today.year, 12, 31)).strftime('%Y-%m-%d')
return restful.success(data =data)
if __name__ == '__main__':
app.run(port=9111,debug=True)
如果对你有所帮助,那就请你三联:关注+点赞+转发吧!