背景
最近一个项目要做一个倒计时功能(如下图),自然首要的是想到用结束时间时间戳 - 当前手机时间时间戳
,然后由得到的差值计算还剩 N天N小时N分N秒
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端调试页面,发现一切是那么的顺利,计算出了准确的时间戳。可是(OK,there is always a but );是的当我把这个页面,在手机端查看时,发现安卓正常,但是 ios呢却是NaN
原因
原来当我获取结束时间时间戳时,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);