javascript开发中使用Date是比较多的。最近在Vue开发时用js时间字符串转时间戳来进行时间对比时发现在安卓手机和浏览器上面都是正常的,但是在苹果手机上面却发现了异常。

例如后端返回给前端的时间字符串格式数据为:2022-05-26 09:10:53;所以在前端跟当前时间对比时是先把时间字符串转成时间戳,通过对比代码如下:

expireTime = '2022-05-26 09:10:53';
chkExpire(expireTime) {
var oDate1 = new Date(expireTime)
var oDate2 = new Date()
if(oDate1.getTime() < oDate2.getTime()){
      return true
} else {
      return false
}
}

经过苹果手机验证后修改为

chkExpire(expireTime) {
    var oDate1 = new Date(expireTime.replace(/-/g,"/"))
    var oDate2 = new Date()
    if(oDate1.getTime() < oDate2.getTime()){
      return true
    } else {
      return false
    }
}

其中最关键的是 expireTime.replace(/-/g,"/") 这一句,把时间字符串 2022-05-26 09:10:53 转成 2020/05/26 09:10:53。解决问题。我们使用Date的输出字符串函数 console.log(new Date().toLocaleString()) 得到 2022/5/26 11:35:02,所以js时间字符串的正确格式是 2022/5/26的,而不是2022-05-26