ios端与安卓端的时间兼容处理

ios端与安卓端的时间兼容问题

对于 2020-02-02 20:20:20 这种格式的时间

主要问题是:ios端不支持2020-02-02 20:20:20这种以-分割的时间格式。ios端仅支持2020/02/02 20:20:20这种以/分割的时间格式。而安卓端及pc端这两种格式的均支持。

解决办法:
1、判断如果是ios端则将时间格式转换成以/分割的形式。
如  let time='2020-02-02 20:20:20'.replace(/-/g,'/')   //返回结果:"2020/02/02 20:20:20"
    let preTime = new Date(time).getTime()   //返回结果: 毫秒数:1580646020000

2、将时间格式转化成数组格式再去转换成毫秒数。 
如  let time='2020-02-02 20:20:20'.split(/[- :]/)   //返回结果:["2020", "02", "02", "20", "20", "20"]
    let preTime = new Date(time[0],time[1]-1,time[2],time[3],time[4],time[5]).getTime()  //返回结果: 毫秒数:1580646020000

解决格林尼治时间在ios端和android端的兼容问题

格林尼治时间格式:2019-03-05T09:02:24.000+0000

android端:
new Date("2019-03-05T09:02:24.000+0000")  可正常转换。
new Date("2019-03-05T09:02:24.000+0000".substr(0,19))  转换出来的时间会早8个小时

ios端:
new Date("2019-03-05T09:02:24.000+0000")  输出为NaN,不可用。
new Date("2019-03-05T09:02:24.000+0000".substr(0,19))  可正常转换

故通过判断是否是ios端,再选择转换方式。具体代码如下:
transDate(dateNum){
        let u = navigator.userAgent;
        if (!!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {   //ios端
            const date=new Date(dateNum.substr(0,19))   //截取前19位后再转换
            let Y=date.getFullYear()
            let M=date.getMonth()+1
            M=M<10?('0'+M):M
            let D=date.getDate()
            D=D<10?('0'+D):D
            let h=date.getHours()
            h=h<10?('0'+h):h
            let m=date.getMinutes()
            m=m<10?('0'+m):m
            let s=date.getSeconds()
            s=s<10?('0'+s):s
            return `${Y}-${M}-${D} ${h}:${m}:${s}`
        }else{                                             //非ios端
            const date=new Date(dateNum)   //不截取,正常转换
            let Y=date.getFullYear()
            let M=date.getMonth()+1
            M=M<10?('0'+M):M
            let D=date.getDate()
            D=D<10?('0'+D):D
            let h=date.getHours()
            h=h<10?('0'+h):h
            let m=date.getMinutes()
            m=m<10?('0'+m):m
            let s=date.getSeconds()
            s=s<10?('0'+s):s
            return `${Y}-${M}-${D} ${h}:${m}:${s}`
        }
            
},

例子可以看 https://www.cnblogs.com/huihuihero/p/12195643.html

posted @ 2020-01-15 15:00  huihuihero  阅读(473)  评论(0编辑  收藏  举报