作者:坚强一点

链接:https://zhuanlan.zhihu.com/p/22253858

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在写js 日历插件的时候遇到一个奇怪的情况。

日历当前的日期是 2016-08-31 号 用  js Date 类型保存的当前日期

var currDate = new Date(); // 初始化的时候的当期日期,

当我点击下一个月的时候,直接取出当期日期的月份,然后 +1

直接重置 currDate 的月份 的代码ru

currDate.setMonth(currDate.getMonth() + 1);

在大部分情况下这种做法是没有问题的。

但是如果当前月份是 2016-08-31 的时候,我取出当期月份然后+1最后的结果是2016-10-01

月份增加了2月,而不是想象中的只增加了一个月,如果细心的人已经发现了,日期的天数变化,从31号变到了1号,其实问题也就出现在这里。

因为当我使用“currDate.setMonth(currDate.getMonth() + 1);”这段代码重置月份的时候,

最后的结果是 2016-09-31,但是实际情况是,2016-09月份的时候只要30填,没有31号,所以日期就自动往后延期了一天变成了2016-10-01

所以最后我把重置的代码改成了如下

currDate.setMonth(currDate.getMonth() + 1);

currDate.setDate(1);

手动吧日期放到了第一天,心想这下应该没问题了。结果实际情况一点都没变。还是从2016-08-31 直接跳到了2016-10-01。

其实问题还是一样的情况,因为在执行 currDate.setMonth(currDate.getMonth() + 1); 这段代码的时候  currDate 已经是  2016-10-01 号了,这个时候在执行

currDate.setDate(1);这段代码的时候 只是吧 当前月份的日期重置到了1号,所以没有任何变化。

最后把代码改成了

currDate.setDate(1);

currDate.setMonth(currDate.getMonth() + 1);

解决问题。

date js 半年_js Date 日期使用上的一个坑相关推荐

  1. date js 半年_JavaScript Date对象

    Date对象 源码下载 最初接触编程,没有接触过非常讲究时间控制的领域,往往对时间没有概念,单片机编程,嵌入式开发,操作系统,无人及姿态控制往往会关注毫秒ms.微秒us级的时间概念. 什么是并行,什么 ...

  2. date js 减去_JS日期减去8小时(北京时间转UTC)

    //日期原型 Date.prototype.Format = function(fmt) { //author: meizz var o = { "M+" : this.getMo ...

  3. 微信网页开发wx.getLocation在安卓手机上的一个坑

    我在wx.getLocation的成功回调函数里,执行了一句 this.lon = res.longitude.toFixed(6) 在苹果手机和调试工具上都是能获取到数据的,但是在安卓手机上this ...

  4. date js 半年_moment.js 搜索栏获取最近一周,一个月,三个月,半年,一年时间

    统计时间 label: '统计时间', name: 'countTime', type: 'select', data: [ { value: '0', text: '最近一周' }, { value ...

  5. date js 减去_js 当前时间减去3个月

    Redd.config里面的时间戳和随机字符串是哪个签名的时间戳和随机字符串 //代码贴给你,你就明白拉. //前台JS获取timeStamp : var d = new Date(); var ti ...

  6. date javascript 时区_js Date 时间戳 时区等问题总结

    js 的Date 时间戳并没有时区的概念  在任何时区 打印new Date(1) 显示的都是相对时间 如下: var t = new Date(1); t // Thu Jan 01 1970 08 ...

  7. ensp 移动主机搜索不到AP信道_案例WiFi信道上的一个坑

    近期处理的一件比较奇怪的投诉,光猫的无线WiFi功能不能使用,其他路由器没问题,险些掉到坑里没爬上来.给大家分享一下. 一.投诉现象 装维人员反映客户投诉光猫的无线WiFi功能突然无法使用. 装维人员 ...

  8. js取服务器系统时间,JS中new Date()用法及获取服务器时间

    1.获取服务器时间: var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Dat ...

  9. new Date将字符串转化成日期格式 兼容IE,ie8如何通过new Date将字符串转化成日期格式,js中如何进行字符串替换, replace() 方法详解

    new Date将字符串转化成日期格式 兼容IE,ie8如何通过new Date将字符串转化成日期格式,js中如何进行字符串替换, replace() 方法详解 //获得年月日时分秒 //传入日期// ...

最新文章

  1. 字节跳动一面:i++ 是线程安全的吗?
  2. angular-oauth2 —— NG 的 OAuth2 认证模块
  3. 大数据系列修炼-Scala课程07
  4. vue 访问 const 变量_var与let、const的区别
  5. 吉大18秋学期C语言作业二答案,吉大18秋《C语言程序设计》在线作业12参考
  6. spring boot api文档_精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用
  7. ETL作业调度软件TASKCTL自定义扩展作业类型插件安装
  8. 地壳中元素含量排名记忆口诀_高中化学短周期元素推断题的常见题眼
  9. 茅侃侃,80后技术人与你同在 | 一周业界事
  10. matlab仿真弹簧波,基于Matlab/Simulink的三弹簧谐振子微振动的仿真实验
  11. HDU 1079 Calendar Game 博弈
  12. 系统架构设计:平滑发布和 ABTesting,你都会吗?
  13. Atitit mq的AMQP 协议 STOMP2 、MQTT3 等协议  MQTT,XMPP,STOMP,AMQP,WAMP 目录 1. AMQP in a Nutshell 1 2. MQTT概述
  14. 微信小程序通过”链接/文字/数字等等“生成二维码
  15. 99行拓扑优化matlab程序解读,99行拓扑优化 代码解析
  16. 未注册域名批量查询工具
  17. 【游戏建模模型制作全流程】ZBrush蜥蜴模型雕刻教程
  18. 计算机一级怎么截图保存到桌面,怎么截屏电脑桌面
  19. Highest Scoring Word
  20. 楷体DB_2312 安装包

热门文章

  1. mysql写什么不同_mysql - 编译配置PHP时,两种配置写法有什么不同
  2. python中的集合set
  3. NLP界新SOTA!吸纳5000万级知识图谱,一举刷爆54个中文任务!
  4. 周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题...
  5. Science | 再创生命奇迹!日本科学家造出了不需要“父亲”的大鼠及小鼠
  6. Java总结:Spring5框架(1)
  7. Django - 中间件
  8. Django - AJAX
  9. axios请求本地的json文件在打包部署到子目录域名下,路径找不到
  10. Spring入门之一-------实现一个简单的IoC