js手机端时间区间_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 }

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39981093/article/details/111834636

智能推荐

开发证书和发布证书的配置(图解篇)-程序员宅基地

http://blog.csdn.net/hxqblog/article/details/44676475 文字配置步骤下面是图解步骤

Nginx提供下载apk服务-程序员宅基地

有时候我们可能需要提供文件或者其他apk下载链接,通过 nginx 配置可以很简单地实现。server { listen 80; server_name download.xxx.com; root app; location / { index index.html; } location /app { ...

备忘录(Memento)模式-程序员宅基地

*备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对戏的内部状态, *              并在该对象之外保存这个状态。这样以后就能恢复到原来保存的状态 *Originator(发起人): 负责创建一个备忘录 Memento,用以记录当前时候他的内部状态,并可用于备忘录恢复。 *Memento(备忘录):负责...

苹果OSX 10.11关闭rootless内核保护教程_Mac关闭rootless教程-程序员宅基地

  方法如下:   1.重启电脑开后按住 Command-R 进入恢复分区. 然后在 实用工具 栏找到 终端启动运行.  输入:csrutil disable; reboot  2.你会看到系统保护被关闭的字样并且系统自动重启. 这样你就可以修改系统级别的文件了.   3.但是系统还有一个保护叫做 Gatekeeper , 这个是防止第三方应用访问你的隐私信息的. 如果你也想关掉在...

linux 解决env: source: 没有那个文件或目录_source ~/.bashrc没有那个文件或目录-程序员宅基地

一直在不以下的错:sudo source ~/.bashrc parallels@centos-7[sudo] parallels 的密码:env: source: 没有那个文件或目录原因是:今天安装了zsh..._source ~/.bashrc没有那个文件或目录

Mapped Statements collection already contains value for XXX异常处理_java mapped statements collection already contains-程序员宅基地

报错:Mapped Statements collection already contains value for XXX大体意思是mapper映射集合的值已存在。原因:在mybatis中注册StudentMappper.xml文件之后,又在spring.xml中又注册了一次,导致mapper文件多次注册报错。解决:删除其中一个扫描即可通过度娘浏览许多博客,总结下来有以下几个原因:1、..._java mapped statements collection already contains value for com.cmb.payeasy

随便推点

HyperLedger Fabric ChainCode开发——shim.ChaincodeStubInterface用法_go: warning: "github.com/hyperledger/fabric/core/c-程序员宅基地

HyperLedger Fabric ChainCode开发——shim.ChaincodeStubInterface用法深居蓝前几篇博客讲了Fabric的环境搭建,在环境搭建好后,我们就可以进行Fabric的开发工作了。Fabric的开发主要分成2部分,ChainCode链上代码开发和基于SDK的Application开发。我们这里先讲ChainCode的开发。Fabric的链上代码支持Jav..._go: warning: "github.com/hyperledger/fabric/core/chaincode/shim/..." matched

色彩理论练习题-程序员宅基地

网页色彩理论原文地址:http://www.poluoluo.com/jzxy/201105/128870.html三原色的名称,并解释它们为什么会被称为原色。  三原色包括:红色、黄色、蓝色,因为其它姿色不能调配出这三种颜色,所以被称为三原色。三种间色的名称,以及它们是由哪些原色混合而成的。  间色指红、黄、蓝三原色中的某二种原色相互混合的颜色  (1)橙色=红+黄 (2)绿色=黄+蓝 (3...

测试人员如何测试c语言接口,如何编写接口测试用例?测试工程师必备技能!..._lkxl的博客-程序员宅基地

原标题:如何编写接口测试用例?测试工程师必备技能!自动化始终只是辅助测试工作的一个手段,对于测试人员而言,测试基础和测试用例的设计才是核心。如果测试用例的覆盖率或者质量不高,那将这部分用例实现为自动化用例的意义也就不大了。 那么,接口测试用例应该怎么编写呢?1、接口测试接口:主要是子模块或者子系统间交互并相互作用的部分。这里说的接口是广义的,客户端与后台服务间的协议;插件间通信的接口;模块间的接口..._c语言写的接口如何测试是否正确

Java里面子类对父类属性覆盖问题_子类怎么覆盖父类的常量-程序员宅基地

Java里面子类对父类属性覆盖问题缘由经过百度之后,这可能是一个被我忽略的问题缘由这是因为本人在写几个设计模式的时候用到一个代码片段的时候,使用了如下代码public class Power { int power;}public class V5Power extends Power { int power = 5; public V5Power(){ ..._子类怎么覆盖父类的常量

npm配置整理-程序员宅基地

npm淘宝镜像配置cnpmcnpm输入命令下载cnpm配置淘宝镜像npm install -g cnpm --registry=https://registry.npm.taobao.org配置完成后就可以用下面命令进行下载啦cnpm install 包名_npm配置

相机两种曝光方式的优劣:全局曝光和卷帘曝光_cmos曝光方式-程序员宅基地

 全局曝光和卷帘曝光是常见的相机曝光方式。一般来说,CCD相机是全局曝光,而CMOS相机则存在卷帘曝光。那么,这两种方式孰优孰劣呢?或者说,他们两者的差别在哪里呢?那么,先从两者的定义说起。全局曝光  全局曝光的方式比较简单。也就是说光圈打开后,整个图像芯片同时曝光。因此,曝光时间与机械的开关速度有关。既然与机械运动相关,所以,存在理论上的最小曝光时间。卷帘曝光  顾名思义,卷帘曝光的..._cmos曝光方式