1 /**2 * 日期格式化3 * @param data4 * @returns {string}5 */
6 functiongetFormatData(data) {7 return data?[data.getFullYear(),is2length(data.getMonth()+1),is2length(data.getDate())].join('-'):''
8 }9
10 /**11 * 判断长度12 * @param numb13 * @returns {string}14 * 返回2位15 */
16 functionis2length(numb) {17 return numb.toString().length==2?numb:(0+''+numb)18 }19
20 /**21 * 转为整数22 * @param numb23 * @returns {Number}24 * 返回10进制25 */
26 functiongetIntager(numb) {27 return parseInt(numb,10)28 }29
30 /**31 * 返回日期32 * @param arg33 * @returns {number}34 */
35 functiongetDate(arg) {36 var oneDay = 24*60*60*1000,37 beforeAndAfer = arg*oneDay,38 atLast = new Date().getTime() +beforeAndAfer39 if(arguments[1]){40 atLast = arguments[1].getTime() +beforeAndAfer41 }42 return newDate(atLast)43 }44
45 /**46 * 渲染到页面:渲染日期47 * @param _parent48 * @param date49 * @param today50 */
51 functionsetVal(_parent,date,today) {52 if(arguments.length==4){53 _parent.find('input').eq(1).val(getFormatData(date.monday))54 _parent.find('input').eq(2).val(getFormatData(date.sunday))55 }else{56 _parent.find('input').eq(1).val(getFormatData(date))57 _parent.find('input').eq(2).val(getFormatData(today?today:date))58 }59 }60 functionsetValAndReqNow(arg){61 //今天周几
62 var isNow = newDate().getDay(),63 //通过今天计算出本周一对应的日期
64 monday = getDate(-getIntager(isNow)+1),65 //通过今天计算出本周天对应的日期
66 sunday = getDate(7-isNow),67 diff = 0
68 switch(arg){69 case 1 : //本周
70 monday = getDate(-getIntager(isNow)+1)71 sunday = getDate(7-isNow)72 break;73 case 2 : //下周
74 //计算出周天离今天还有几天
75 diff = 7-getIntager(isNow)76 //计算出下周一日期
77 monday = getDate(diff+1)78 //计算出下周日日期
79 sunday = getDate(7+diff)80 break;81 case 3 : //上周
82 //计算出上周周天离今天还有几天
83 diff =getIntager(isNow)84 //计算出下周一日期
85 monday = getDate(-(6+diff))86 //计算出下周日日期
87 sunday = getDate(-diff)88 break;89 case 4 : //本月
90 /*************************************************91 * 月末计算规则:92 * 获取当前月份然后得到下个月1号对应的时间戳减去一天的时间戳93 *************************************************/
94 diff =getMonthMt()95 //获取下个月初
96 var end = getYearMt()+'-'+is2length((diff+1))+'-01'
97 //获取下个月初
98 //本月初
99 monday = getNowMonthFrist(diff)//new Date(getYearMt()+'-'+is2length((diff))+'-01')
100 //本月末
101 sunday = getDate(-1,getNowMonthEnd(diff+1))//getDate(-1,new Date(end))
102 break;103 case 5 : //上月
104 diff =getMonthMt()105 //获取下个月初
106 //上月初
107 monday = getNowMonthFrist(diff-1,-1)108 //上月月末
109 sunday = getDate(-1,getNowMonthEnd(diff),-1)110 break;111 case 6 : //下月
112 diff =getMonthMt()113 //获取下个月初
114 //下月初
115 monday = getNowMonthFrist(diff+1,1)116 //下月月末
117 sunday = getDate(-1,getNowMonthEnd(diff+2),1)118 break;119 }120 /*************************************************121 * 本月日期区间计算规则:122 * ----本月一号减去一天的时间戳-----123 * 月末计算规则:124 * 获取当前月份然后得到下个月1号对应的时间戳减去一天的时间戳125 *************************************************/
126
127 return{128 monday:monday,129 sunday:sunday130 }131 }132 //获取当前月份
133 functiongetMonthMt() {134 return getIntager(new Date().getMonth())+1
135 }136
137 /**138 * 返回准确的年月,确保上查询上一月和下一月的时候年份和月份不合适139 * @param month140 * @returns {{thisMonth: number, year: number}}141 */
142 functionaccurateYAndM(month) {143 var year = 0,144 thisMonth = 0
145 if(month==0&&arguments[1]==-1){146 year = getYearMt()-1
147 thisMonth = 12
148 }else if(month==13&&arguments[1]==1){149 year = getYearMt()+1
150 thisMonth = 1
151 }else{152 year =getYearMt()153 thisMonth =month154 }155 return{156 thisMonth:thisMonth,157 year:year158 }159 }160 //获取当前X月初日期
161 functiongetNowMonthFrist(month) {162 var yAndM =accurateYAndM(month)163 return new Date(yAndM.year+'-'+is2length(yAndM.thisMonth)+'-01')164 }165 //获取当前X月末日期
166 functiongetNowMonthEnd(month) {167 var yAndM =accurateYAndM(month)168 return new Date(yAndM.year+'-'+is2length(yAndM.thisMonth)+'-01')169 }170 //获取当前年份
171 functiongetYearMt() {172 return getIntager(newDate().getFullYear())173 }