js手机端时间区间_JS日期区间选择和计算(一)技术篇

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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值