vue中解决时间在ios上显示NAN的问题

Posted Ashin5800

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue中解决时间在ios上显示NAN的问题相关的知识,希望对你有一定的参考价值。

最近在用vue,遇到倒计时在ios上显示为NAN的问题。

因为做的是倒计时支付,思路是获取服务器时间和下单时间,再转成秒级时间戳做差值。

在网上找到说是ios 不支持例如2018-09-01 10:00:59这种"-"连接符。

网上的解决是:

var data = ‘2018-09-01 12:00:00‘
var time= Date.parse(new Date(data ))

然后用正则匹配改一下,将-替换为/

var date = ‘2018-09-01 12:00:00‘
var format = date.replace(/-/g, ‘/‘)
var time= Date.parse(new Date(format))

但是问题还是没有解决,在ios上仍然显示为NAN

于是想到用moment.js,成功解决问题!!!

vue中先引入npm install moment --save

import moment from ‘moment/moment‘

然后

//注意:苹果手机不支持以“-”分割的时间形式,故必须进行格式转换为‘YYYY/MM/DD HH:mm:ss‘。
//date格式是后台返回过来的Timestamp 2018-09-01T09:10:41.000+0000
let transTime = moment(date).format(‘YYYY/MM/DD HH:mm:ss‘)
console.log(transTime)

输出

2018/09/01 09:10:41
//转为时间戳
let omTime = this.transformTime(transTime)

transformTime(t){
    console.log(‘转换前的时间‘+t)
    //利用moment工具生成date对象
    let date = moment(t).toDate()
    console.log(‘date:‘+ date)
    //变成秒级时间戳
    return moment(date).valueOf()
}
                    

这个omTime时间戳就可以用来和服务器的时间戳做差值实现倒计时了,

经测试,在android和ios上都没问题,问题终于搞定!!!

这里mark记录一下,分享给你们,避免踏坑太久。

 


以上是关于vue中解决时间在ios上显示NAN的问题的主要内容,如果未能解决你的问题,请参考以下文章

javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决

关于苹果真机 getFullYear()返回值为NAN的问题

js将标准时间转换为时间戳在苹果手机显示NaN

layui util.toDateString 日期显示NAN

移动端开发在iOS系统中 new Date() 返回 NaN 的问题

执行代码时有时不显示对话框片段