作者:坚强一点

链接: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. If one day
  2. idea控制台输出乱码
  3. javaaop模式供其他项目调用_Java 分布式架构的 开源的支付项目 调试实战
  4. Day11多态部分-6 【1.5 多态的好处和弊端】
  5. Duilib学习笔记《03》— 控件使用
  6. 前端学习(2528):一个简单的vue app
  7. mysql 恢复同步_常见MySQL同步错误恢复方法
  8. 牛客网暑期ACM多校训练营(第五场): A. gpa(01分数规划)
  9. 产品需求文档写作方法(一)写前准备+梳理需求
  10. STC学习:八位数码管滚动显示
  11. 数模电路基础知识 —— 3. 常见电路符号说明(电容、电阻、电感)
  12. SICP第一章:构造过程抽象(1.1)
  13. HBase原理 -Regin切分
  14. 【蓝桥杯经典数学题】杨辉三角形
  15. python基础思维导图
  16. OVR模式和sklearn模型评价标准学习
  17. 浮点运算/半精度,单精度,双精度/浮点和定点
  18. git密码重置后如何登录
  19. bed文件 坐 标的调整(awk的用法)
  20. 【渝粤题库】广东开放大学 手机软件开发APP 形成性考核 -

热门文章

  1. php金字塔手动输入行数,[菜鸟学php] php版自定义函数实现金字塔
  2. 哈工大|NLP数据增强方法?我有15种
  3. Spring Cloud实战小贴士:turbine如何聚合设置了context-path的hystrix数据
  4. 月圆花美 中秋快乐!
  5. 肖仰华 | 大规模、高质量的金融知识图谱,如何自动化构建?
  6. dockerfile拉取python3.7镜像
  7. 一键离线下载python安装包:
  8. RocketMQ:Linux下启动server和broker的命令
  9. 设计模式系列 - 原型模式
  10. 优动漫PAINT核心功能介绍