美文网首页程序员
日常小计-js时间转换时间戳(IOS与Android)

日常小计-js时间转换时间戳(IOS与Android)

作者: 夏日清风_期待 | 来源:发表于2018-03-21 17:05 被阅读0次

    做了个小demo,放上来记一下,没什么技术含量。
    效果图:


    1
    2-未选择时间
    3-选择时间
    4-确定

    注意问题:
    转换为时间戳时需要注意时间字符串的格式,因为Android和ios显示是不一样的,例如安卓一般为“2018-3-12 16:42”而ios有这样的格式“2018-3-12T16:43”,所以在转换的时候要做兼容。不过本案例中只截取了日期,并不需要后面的时间,所以这里不需要做兼容。

    js判断客户端是ios还是Android

    var u = navigator.userAgent; 
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 
    var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    

    ios处理方法:

    var endTime_iso=endTime_str.split(/[- :]/);
    
    endTime=new Date(
        endTime_iso[0],
        endTime_iso[1]-1,
        endTime_iso[2],
        endTime_iso[3],
        endTime_iso[4],
        endTime_iso[5]
    ).getTime()/1000
    

    Android就比较简单了

    new Date(endTime_str).getTime()/1000;
    

    demo代码,因为不需要后面的时间,所以把截取时间的都注释掉了

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <title>demo</title>
    
        <link rel="stylesheet" href="./css/mobiscroll.custom-2.5.0.min.css">
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
        
    </head>
    <body>
        <input type="button" value="计算" data-role="datebox" id="txtBirthday" name="txtBirthday" onChange="calculate()"/>
    
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
    <script src="./js/mobiscroll.custom-2.5.0.min.js"></script>
    <script>
        var u = navigator.userAgent; 
        var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 
        var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    </script>
    <script>
      $(function(){
            //mobiscroll的调用方法
        $('input:jqmData(role="datebox")').mobiscroll().date();
      })
    //因为需求点击mobiscroll的确定按钮就直接进行计算,所以只能通过onChenge监听来进行
    function calculate(){
        // console.log("2")
        var s_date = $("input[name='txtBirthday']").val();
            //ios处理方法
            if(isiOS){
                 console.log("2")
                s_date=s_date.split(/[- :]/);
                s_date=new Date(
                    s_date[0],
                    s_date[1]-1,
                    s_date[2]
                    // endTime_iso[3],
                    // endTime_iso[4],
                    // endTime_iso[5]
                    ).getTime()
            }else{
                    //Android处理方法
                var f = s_date.split(' ', 2);
                var d = (f[0] ? f[0] : '').split('-', 3);
                //var t = (f[1] ? f[1] : '').split(':', 3);
                s_date = new Date(
                    parseInt(d[0], 10) || null,
                    (parseInt(d[1], 10) || 1) - 1,
                    parseInt(d[2], 10) || null
                    // parseInt(t[0], 10) || null,
                    // parseInt(t[1], 10) || null,
                    // parseInt(t[2], 10) || null
                    ).getTime();
            }
            console.log("s_date----",s_date)
            //获取当前时间戳
            var e_date=new Date().getTime();
            console.log("e_date----",e_date)
            //时间戳之差
            var newDate = e_date - s_date
            console.log("newDate----",newDate)
            //时间戳转换为天数,注意后面是*1000的,因为在转为时间戳的时候没有/1000,所以在这里要加上
            days = Math.floor(newDate/(24*3600*1000))
            console.log(" 相差 "+ days +"天 ")
    }   
    </script>
    </body>
    </html>
    

    相关文章

      网友评论

        本文标题:日常小计-js时间转换时间戳(IOS与Android)

        本文链接:https://www.haomeiwen.com/subject/yrbgqftx.html