业务需求:人员投入的时间要大于等于项目开始时间并且小于等于项目结束时间

场景描述:项目开始时间 2021-09-06,项目结束时间 2021-11-09,人员开始投入时间 2021-09-06,结果在 elemnetUI 的日期选择组件中2021-09-06这一天被禁用了,无法选择 2021-09-06 这一天。

经过分析,问题出在了日期选择组件中可选日期的逻辑代码中,代码中是根据时间戳(毫秒)来进行判断的,组件中日期的毫秒值默认是00:00:00的值,而项目开始时间在转换为毫秒后获取到的是08:00:00的毫秒值。在业务人员眼中明明都是 2021-09-06 ,为什么这一天被禁用了?实际上在通过new Date("2021-09-06")的方法转换毫秒值后,项目开始时间的2021-09-06比组件日期选择面板中的2021-09-06少了 8*60*60*1000 毫秒,所以面板中的 2021-09-06 被禁用了。问题定位清楚了,解决起来就方便多了!!!

下面简单说说 new Date()new Date("YYYY-MM-dd")new Date("YYYY", "MM", "dd")的区别

new Date() // 获取的是当前时间,即此时此刻的时间
// Fri Dec 10 2021 22:56:02 GMT+0800 (中国标准时间)new Date("2021-12-10") // 获取的是 `2021-12-10` 早上 `08:00:00`
// Sat Dec 10 2021 08:00:00 GMT+0800 (中国标准时间)new Date("2021", "12", "10") // 获取的是 `2022-01-10` 凌晨 `00:00:00`
// Tue Jan 10 2022 00:00:00 GMT+0800 (中国标准时间)

注意:new Date(“2021”, “12”, “10”) 获取的时间比指定的月份多了1个月,与getMonth() + 1获取当月月份同样的道理,要通过new Date(“YYYY”, “MM”, “dd”)的方式获取到预期的时间需要 实际月份 -1指定 MM 才能获取到当月实际时间

说明:new Date(“2021”, “11”, “10”) 与 new Date(“2021-12-10 00:00:00”) 获取到的时间是一样的

new Date("2021", "11", "10").getTime() === new Date("2021-12-10 00:00:00").getTime() // true

另外:new Date() 获取的是当前主机的时间,当前主机时间改成哪一天,new Date()获取就是改后那一天的时间,所以当要使用new Date()的值来作为校验条件时,最好是获取服务器的时间 前端获取服务器时间

最后

解决问题的办法不止一个,选择一个符合实际情况的方案才是最重要的

js new Date(String)少8个小时导致的问题以及解决办法相关推荐

  1. [前台]---js重复上传一张图片两次,第二次失败的解决办法和思路

    js重复上传一张图片两次,第二次会失败,解决办法就是修改input的value值. 先上代码: <input style="display:none" type=" ...

  2. js文件中发送ajax请求,ulr路径不起作用的解决办法

    前言: 在写Python项目的时候,单独的js文件发送ajax请求,并不起效果并且提示路径错误 错误原因分析: {% url 'myadmin_updategoodsgrade' %} # 是模板中的 ...

  3. 时间戳转换成日期,少了8小时【问题综合汇总解决】

    问题引入 在部署博客项目的过程中,将项目部署到服务器后,时间戳转日期少了8小时.具体问题是这样的. 测试时间是真实时间,而createDate是前端拿到的数据中的时间.可以看到,二者相差8个小时. 接 ...

  4. freemarker中js里面取字符串,换行导致报错的解决办法

    问题原因 原因在于直接在js中取的变量并复制给var变量. var data = '${content}'; 于是就变成这样. 解决办法 var data = '${content?js_string ...

  5. JS之前台参数提交到后台,双引号转义为解决办法

    问题描述 var param = $("#searchForm").serializeJson(); 前台封装好了键值对形式的字符串,使用了EasyUI的treeGrid控件,传到 ...

  6. Incorrect string value XF0 X9F X98 XB3 XE3 for column 解决办法

    Incorrect string value: '\xF0\x9F\x98\xB3)\xE3...'  for column 'content'解决办法 原因解析:我们的评论数据中存在emoj表情,而 ...

  7. iframe js 加载失败_JS加载iFrame出现空白问题的解决办法

    在使用IE6浏览器开发过程中出现各种奇葩问题,非常棘手,费劲脑汁终于问题解决.特此把我的问题描述及解决办法分享到脚本之家平台,帮助那些遇到此问题的朋友. 1.js加载iframe出现空白 iframe ...

  8. ArcGIS JS API 4.10跨域问题(本地切片无法加载)解决办法

    场景: 使用ArcGIS API for JavaScript 4.10加载服务器发布的切片地图报错跨域,之前用3.x系列一切正常,换成4.10之后不出图,关键是加载官方在线切片服务一切正常.升到4. ...

  9. 小程序Date.toLocaleString()方法在安卓上不起效的解决办法

    感觉写法很蠢,但是能用 let time = res.data[0].time; //Date类型 let year = time.getFullYear(); let month = time.ge ...

最新文章

  1. HashMap 详解七
  2. Linux 性能分析的前 60 秒
  3. beanUtils操作bean的属性
  4. 【Python基础】纯Python绘制满满艺术感的山脊地图
  5. Sharepoin学习笔记—架构系列—07nSharepoint服务(Services)与服务应用程序框架(Service Application Framework) 2
  6. 转:Linux设备驱动开发(1):内核基础概念
  7. at java.net.url init,java.net 基本测试
  8. 用JS控制下拉菜单效果
  9. API经济正在牵制技术的改革
  10. 计算机启动后出现黑屏鼠标,计算机启动后,黑屏只有鼠标解决方案
  11. 郝斌老师c语言笔记 TXT,郝斌老师c语言笔记
  12. 戴尔笔记本安装双系统(win10+ubuntu20.04)避坑记录
  13. 20221106EXCEL/腾讯文档 部分常用函数嵌套用法总结
  14. pandownload网页版服务器维护中,PanDownload网页版源码
  15. .NET 中的程序集
  16. 关于‘\0’ ,‘0’, “0” ,0的理解
  17. Python 学习笔记9 循环语句 For in
  18. 解析H264的SPS信息
  19. 设计模式(三)--工厂模式
  20. mysql 查询今天_mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句

热门文章

  1. 想要科研顺利,顶会师兄师姐经验分享
  2. 用于商务联系的邮箱如何命名更为得体?
  3. 为什么手游创业项目首选游戏平台加盟?
  4. kindeditor批量上传设置_ftp如何使用,ftp如何使用,3步掌握安装及使用方法 - 批量远程桌面管理服务器、vps教程...
  5. 中科院拓扑量子计算机,中国科大等利用量子模拟技术实现拓扑数的直接测量
  6. 新型网站木马爆发,众多知名网站沦陷
  7. Windows下Android开发环境配置
  8. python人脸识别神器_教你用Python人脸识别自动开机,值得收藏
  9. IP公司及其处理器IP系列(DSP, GPU, AI)
  10. 【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!