效果:
代码:
1 //用于获取日期本周、本月、本季度的js
2 //Author : guanghe
3 //文件引用方法:<script src="${staticPath}/common/js/dateUtil.js"></script>
4 /**
5 * 获取本周、本季度、本月、上月的开始日期、结束日期
6 */
7 var now = new Date(); //当前日期
8 var nowDayOfWeek = now.getDay(); //今天本周的第几天
9 var nowDay = now.getDate(); //当前日
10 var nowMonth = now.getMonth(); //当前月
11 var nowYear = now.getYear(); //当前年
12 nowYear += (nowYear < 2000) ? 1900 : 0;
13
14 //格式化日期:yyyy-MM-dd
15 function formatDate(date) {
16 var myyear = date.getFullYear();
17 var mymonth = date.getMonth() + 1;
18 var myweekday = date.getDate();
19 if (mymonth < 10) {
20 mymonth = "0" + mymonth;
21 }
22 if (myweekday < 10) {
23 myweekday = "0" + myweekday;
24 }
25 return (myyear + "-" + mymonth + "-" + myweekday);
26 }
27
28 //获得某月的天数
29 function getMonthDays(theYear, theMonth) {
30 var monthStartDate = new Date(theYear, theMonth, 1);
31 var monthEndDate = new Date(theYear, theMonth + 1, 1);
32 var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
33 return days;
34 }
35
36 //获得本季度的开始月份
37 function getQuarterStartMonth(theMonth) {
38 if(!theMonth) {
39 theMonth = nowMonth;
40 }
41 var quarterStartMonth = 0;
42 if (theMonth < 3) {
43 quarterStartMonth = 0;
44 }
45 if (2 < theMonth && theMonth < 6) {
46 quarterStartMonth = 3;
47 }
48 if (5 < theMonth && theMonth < 9) {
49 quarterStartMonth = 6;
50 }
51 if (theMonth > 8) {
52 quarterStartMonth = 9;
53 }
54 return quarterStartMonth;
55 }
56
57 //获得本周的开始日期
58 function ghGetWeekStartDate() {
59 var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1);
60 return formatDate(weekStartDate);
61 }
62 //获得本周的结束日期
63 function ghGetWeekEndDate() {
64 var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek) + 1);
65 return formatDate(weekEndDate);
66 }
67
68 //获得下周的开始日期
69 function ghGetNextWeekStartDate() {
70 var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 7 + 1);
71 return formatDate(weekStartDate);
72 }
73
74 //获得本月的开始日期
75 function ghGetMonthStartDate() {
76 var monthStartDate = new Date(nowYear, nowMonth, 1);
77 return formatDate(monthStartDate);
78 }
79
80 //获得本月的结束日期
81 function ghGetMonthEndDate() {
82 var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowYear, nowMonth));
83 return formatDate(monthEndDate);
84 }
85
86 //获得下月开始时间
87 function ghGetNextMonthStartDate() {
88 var theYear = nowYear;
89 var theMonth = nowMonth + 1;
90 if(theMonth == 12) {
91 theYear += 1;
92 theMonth = 0;
93 }
94 var nextMonthStartDate = new Date(theYear, theMonth, 1);
95 return formatDate(nextMonthStartDate);
96 }
97
98 //获得本季度的开始日期
99 function ghGetQuarterStartDate() {
100 var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);
101 return formatDate(quarterStartDate);
102 }
103
104 //或的本季度的结束日期
105 function ghGetQuarterEndDate() {
106 var quarterEndMonth = getQuarterStartMonth() + 2;
107 var quarterStartDate = new Date(nowYear, quarterEndMonth,
108 getMonthDays(nowYear, quarterEndMonth));
109 return formatDate(quarterStartDate);
110 }
111
112 function ghGetNextQuarterStartDate() {
113 var theYear = nowYear;
114 var theQuarterMonth = nowMonth + 3;
115 if(theQuarterMonth > 11) {
116 theYear += 1;
117 theQuarterMonth -= 12;
118 }
119 var quarterStartDate = new Date(theYear, getQuarterStartMonth(theQuarterMonth), 1);
120 return formatDate(quarterStartDate);
121 }
122
123 //设置查询时间
124 function ghSetDate(areaName, inputName, id) {
125 var date = $(areaName).children(inputName);
126 var dateStart = date.eq(0);
127 var dateEnd = date.eq(1);
128 switch(id) {
129 case "cur_week" :
130 dateStart.val(ghGetWeekStartDate());
131 dateEnd.val(ghGetNextWeekStartDate());
132 break;
133 case "cur_month" :
134 dateStart.val(ghGetMonthStartDate());
135 dateEnd.val(ghGetNextMonthStartDate());
136 break;
137 case "cur_quarter" :
138 dateStart.val(ghGetQuarterStartDate());
139 dateEnd.val(ghGetNextQuarterStartDate());
140 break;
141 }
142 }
143
144 //初始化时间区域选择控件
145 // name:时间组件选择器name
146 function ghInitWidget(name) {
147 var areaName = "#" + name + "_date";
148 var inputName = "input[name='" + name + "']";
149 var str = $("<label id='theLabel' class='control-label'><a id='cur_week'>本周</a> <a id='cur_month'>本月</a> <a id='cur_quarter'>本季度</a> 自定义 </label>");
150 $(areaName).before(str);
151 //点击区域按钮,高亮并搜索
152 $("#theLabel a").click(function() {
153 $("#theLabel a").css("color", "#337ab7");
154 $(this).css("color", "red");
155 ghSetDate(areaName, inputName, this.id);
156 $(":button.btn-search1").click();
157 });
158 //点击日期框,区域选择按钮取消高亮
159 $(areaName).children(inputName).click(function() {
160 $("#theLabel a").css("color", "#337ab7");
161 });
162 }