首页 > PHP,Javascript > js下将普通时间转换为unix时间,兼容所有浏览器

js下将普通时间转换为unix时间,兼容所有浏览器

不得不承认IE是个奇葩,就算是javascript也会与其他浏览器不同,例如将普通时间转化为unix时间戳的Date()所接受的参数不能带有短横线,案例如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>IE下普通时间转换为Unix时间戳</title>
    </head>
<body>
<script language="javascript">
    var str = '2015-08-30 11:11:11';
    //Invalid Date
    alert(new Date());
</script>
</body>
</html>

其他主流浏览器均能够正确转换为unix时间对象,而IE所有版本甚至最新的Edge浏览器均返回"Invalid Date",这是由于IE不能识别年份的短横线导致的,例如我们将短横线批量替换为正斜线之后就能正确转换。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>IE下普通时间转换为Unix时间戳</title>
    </head>
<body>
<script language="javascript">
    String.prototype.stringToDate = function(){
        //2015/08/30 11:11:11
        alert(this.replace(/-/g, "/"));
        return new Date(Date.parse(this.replace(/-/g, "/")));
        //or
        return new Date(this.replace(/-/g, "/"));
    }
    var str = '2015-08-30 11:11:11';
    alert(str.stringToDate());
</script>
</body>
</html>

以上方法兼容其它浏览器,下面还有一种方法,原理是分别解析年月日和时分秒,不是很推荐。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>IE下普通时间转换为Unix时间戳</title>
    </head>
<body>
<script language="javascript">
    String.prototype.stringToDate = function(){
        var fullDate = this.split(" ")[0].split("-");
        var fullTime = this.split(" ")[1].split(":");
        return new Date(fullDate[0], fullDate[1]-1, fullDate[2], (fullTime[0] != null ? fullTime[0] : 0), (fullTime[1] != null ? fullTime[1] : 0), (fullTime[2] != null ? fullTime[2] : 0));
    }
    var str = '2015-08-30 11:11:11';
    alert(str.stringToDate());
</script>
</body>
</html>


教程地址:http://blog.zhengshuiguang.com/php/unix-time.html

欢迎转载!但请带上文章地址^^

标签:unix时间戳 strtotime 时间转换 date

相关文章

评论已关闭