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);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,553评论 0 13
  • 文章图片上传不正常,如需文档,可联系微信:1017429387 目录 1 安装... 4 1.1 配置探针... ...
    Mrhappy_a7eb阅读 6,645评论 0 5
  • 1、今天跑步有终于有了一个小突破——在1小时之内跑完10公里!值得开心!况且一口气跑了15公里,还算不错的成绩! ...
    Phanleys阅读 214评论 0 1
  • 题目1: HTML 5是什么?有哪些新特性?有哪些新增标签?如何让低版本的 IE 支持 HTML5新标签 HTML...
    饥人谷_zhangfan阅读 225评论 0 0
  • 现在的我,很迷茫,或许一直在迷茫吧,在想自己以后到底做什么?目前在大学选的是市场营销专业,选这个专业时,有三个原因...
    语言加油Y阅读 307评论 9 5