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

做了个小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>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,500评论 25 709
  • 拥有最朴素的生活和最遥远的梦,即使远方天寒地冻,路遥马亡
    莫西莫多阅读 92评论 0 0
  • 家居中的创意小点子只有想不到,没有做不到。随着人们对环保健康低碳生活的追求,对手工的热爱,旧物改造也成为家居装修的...
    窗爸爸家居阅读 291评论 0 0
  • 感恩最近心情不佳,我知道一定有巨大的彩蛋等着我去砸。深入体验这种不愉悦的情绪。疗愈清理,外界没有任何力量,生命中出...
    能量团队阅读 112评论 0 0
  • 前天听群里人分享学英语的经历,他现在是一位英语讲师,有自己的工作室。 81年出生2000年高中毕业就来到深圳,20...
    醉月霁幽阅读 326评论 0 1