newDate(time).getTime()在ios返回NaN
newDate(time).getTime()在ios返回NaN
1、问题描述
 最近做了⼀个临时⼩活动,要求超过某个⽇期后活动隐藏,活动由于没做成可复⽤性的,后台也没给做接⼝,就前端写了个判断:假如活动过期⽇期是2018-11-12凌晨;那么判断当前时间是否超过该活动截⽌时间,如果超过,活动隐藏;代码中使⽤了
susan miller 豆瓣new Date().getTime() > new Date('2018-11-12 00:00:00').getTime() //如果为真,活动结束;
  来⽐较活动是否结束,当时只在chrome做了测试,然后感觉肯定没问题,就怼上去了。然后活动结束了。运营反馈说活动还没关闭,我打开我⼿机(安卓⼿机)看了看活动没有了。然后在看看同事的苹果⼿机,果然还在,看了多个⼿机发现只有ios有这个情况,于是在safari控制台测试该代码发现判断条件始终不满⾜,
new Date('2018-11-12 00:00:00').getTime() //在chrome和safari上输出结果不⼀样
  chrome下
  safari下
教师节手抄报图片大全
2、分析
  在⽹上的原因有多中,看了MDN上;也没发现特别的规范,官⽅给了⼏个例⼦:
天下最二芹菜猪肉饺子馅的做法创建 Date 实例⽤来处理⽇期和时间。Date 对象基于1970年1⽉1⽇(世界标准时间)起的毫秒数。
var today = new Date();
var today = new Date(1453094034000); // by timestamp(accurate to the milliseconds)
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17);手机sd卡修复
var birthday = new Date(1995, 11, 17, 3, 24, 0);营业执照注销怎么办理
构造函数
new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
  Note: 需要注意的是只能通过调⽤ Date 构造函数来实例化⽇期对象:以常规函数调⽤它(即不加操作符)将会返回⼀个字符串,⽽不是⼀个⽇期对象。另外,不像其他JavaScript 类型,Date 对象没有字⾯量格式。
  Note: 当Date作为构造函数调⽤并传⼊多个参数时,如果数值⼤于合理范围时(如⽉份为13或者分钟数为70),相邻的数值会被调整。⽐如 new Date(2013, 13, 1)等于new Date(2014, 1, 1),它们都表⽰⽇期2014-02-01(注意⽉份是从0开始的)。其他数值也是类似,new Date(2013, 2, 1, 0, 70)等于new Date(2013, 2, 1, 1, 10),都表⽰时间2013-03-01T01:10:00。
3、解决
  如果想多个浏览器都能使⽤,那么就⽤官⽅给的demo中⽇期的写法-- "2018-11-12T00:00:00" ;写成”2018/11/12 00:00:00"也是可以的;如果是动态获得的,就⽤正则表达式转换⼀下。
4、总结
  平时都是⾃⼰写⾃⼰测试,但是测试还是要严谨点,不能掉以轻⼼。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。