ios new Date("2016-07-18 14:58:32") 返回值为Invalid Date兼容问题

背景

最近一个项目要做一个倒计时功能(如下图),自然首要的是想到用结束时间时间戳 - 当前手机时间时间戳,然后由得到的差值计算还剩 N天N小时N分N秒

image.png

  var nowTimestamp = new Date().getTime();
  var endTimestamp = new Date("2018-07-26 14:58:32").getTime();
  var leftSeconds = endTimestamp - nowTimestamp;
  console.log("当前时间时间戳",nowTimestamp);
  console.log("结束时间时间戳",endTimestamp);
  console.log("差值",leftSeconds);
PC端输出

问题描述 : PC端调试页面,发现一切是那么的顺利,计算出了准确的时间戳。可是(OK,there is always a but );是的当我把这个页面,在手机端查看时,发现安卓正常,但是 ios呢却是NaN

ios时间戳获取演示

原因

原来当我获取结束时间时间戳时,new Date("2018-07-26 14:58:32"); 返回 Invalid Date(错误的时间格式),用错误的时间对象再去获取时间戳,自然是 NaN, ios 下的 new Date() 只能识别 2018/07/26 14:58:32 格式的字符串来生成日期对象。

解决

既然ios下的new Date() 只能识别 2018/07/26 14:58:32 格式的,那么我们只需要把我们原格式中的 - 替换为 /即可,即

  var nowTimestamp = new Date().getTime();
  var endTimestamp = new Date("2018-07-26 14:58:32".replace(/-/g,"/")).getTime();
  var leftSeconds = endTimestamp - nowTimestamp;
  console.log("当前时间时间戳",nowTimestamp);
  console.log("结束时间时间戳",endTimestamp);
  console.log("差值",leftSeconds);

你可能感兴趣的:(ios new Date("2016-07-18 14:58:32") 返回值为Invalid Date兼容问题)