`
cwqcwk1
  • 浏览: 86894 次
文章分类
社区版块
存档分类
最新评论

JavaScript日期时间与时间戳的转换

 
阅读更多

如果只是将当前时间转成时间戳,可以直接使用new Date().getTime()/1000;但如果是将某个具体时间或日期转成Unix时间戳,ie不支持像new Date(“2013-1-1”) 这样带参数的方法,将返回NaN

对此,我写了以下函数,支持ie6+,谷歌,火狐等浏览器:

function getTime(day){
	re = /(\d{4})(?:-(\d{1,2})(?:-(\d{1,2}))?)?(?:\s+(\d{1,2}):(\d{1,2}):(\d{1,2}))?/.exec(day);
	return new Date(re[1],(re[2]||1)-1,re[3]||1,re[4]||0,re[5]||0,re[6]||0).getTime()/1000;
}

//test
alert(getTime("2013-02-03 10:10:10"));
alert(getTime("2013-02-03"));
alert(getTime("2013-02"));
alert(getTime("2013"));

下面这个将时间戳转换成日期格式的函数,支持自定义的日期格式,效果类似PHP的date函数,同样支持ie6+,谷歌,火狐等浏览器。这个函数是网友实现的,以后有时间我也写一个出来 ^_^

function date(format, timestamp){ 
    var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());
    var pad = function(n, c){
        if((n = n + "").length < c){
            return new Array(++c - n.length).join("0") + n;
        } else {
            return n;
        }
    };
    var txt_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"};
    var txt_months = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
    var f = {
        // Day
        d: function(){return pad(f.j(), 2)},
        D: function(){return f.l().substr(0,3)},
        j: function(){return jsdate.getDate()},
        l: function(){return txt_weekdays[f.w()]},
        N: function(){return f.w() + 1},
        S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'},
        w: function(){return jsdate.getDay()},
        z: function(){return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0},
      
        // Week
        W: function(){
            var a = f.z(), b = 364 + f.L() - a;
            var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;
            if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){
                return 1;
            } else{
                if(a <= 2 && nd >= 4 && a >= (6 - nd)){
                    nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");
                    return date("W", Math.round(nd2.getTime()/1000));
                } else{
                    return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
                }
            }
        },
      
        // Month
        F: function(){return txt_months[f.n()]},
        m: function(){return pad(f.n(), 2)},
        M: function(){return f.F().substr(0,3)},
        n: function(){return jsdate.getMonth() + 1},
        t: function(){
            var n;
            if( (n = jsdate.getMonth() + 1) == 2 ){
                return 28 + f.L();
            } else{
                if( n & 1 && n < 8 || !(n & 1) && n > 7 ){
                    return 31;
                } else{
                    return 30;
                }
            }
        },
      
        // Year
        L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},
        //o not supported yet
        Y: function(){return jsdate.getFullYear()},
        y: function(){return (jsdate.getFullYear() + "").slice(2)},
      
        // Time
        a: function(){return jsdate.getHours() > 11 ? "pm" : "am"},
        A: function(){return f.a().toUpperCase()},
        B: function(){
            // peter paul koch:
            var off = (jsdate.getTimezoneOffset() + 60)*60;
            var theSeconds = (jsdate.getHours() * 3600) + (jsdate.getMinutes() * 60) + jsdate.getSeconds() + off;
            var beat = Math.floor(theSeconds/86.4);
            if (beat > 1000) beat -= 1000;
            if (beat < 0) beat += 1000;
            if ((String(beat)).length == 1) beat = "00"+beat;
            if ((String(beat)).length == 2) beat = "0"+beat;
            return beat;
        },
        g: function(){return jsdate.getHours() % 12 || 12},
        G: function(){return jsdate.getHours()},
        h: function(){return pad(f.g(), 2)},
        H: function(){return pad(jsdate.getHours(), 2)},
        i: function(){return pad(jsdate.getMinutes(), 2)},
        s: function(){return pad(jsdate.getSeconds(), 2)},
        //u not supported yet
      
        // Timezone
        //e not supported yet
        //I not supported yet
        O: function(){
            var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
            if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;
            return t;
        },
        P: function(){var O = f.O();return (O.substr(0, 3) + ":" + O.substr(3, 2))},
        //T not supported yet
        //Z not supported yet
      
        // Full Date/Time
        c: function(){return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P()},
        //r not supported yet
        U: function(){return Math.round(jsdate.getTime()/1000)}
    };
      
    return format.replace(/[\\]?([a-zA-Z])/g, function(t, s){
        if( t!=s ){
            // escaped
            ret = s;
        } else if( f[s] ){
            // a date function exists
            ret = f[s]();
        } else{
            // nothing special
            ret = s;
        }
        return ret;
    });
}

//test
alert(date('Y-m-d H:i:s',(new Date).getTime()/1000));
alert(date('Y-m-d',(new Date).getTime()/1000));
alert(date('Y-m-d H:i:s','1355252653'));

分享到:
评论

相关推荐

    JavaScript日期时间与时间戳的转换函数分享

    另一个函数date用于将时间戳转换为可读的日期格式。这个函数使用了正则表达式,支持了自定义日期格式的输出,类似于PHP中的date函数。这个转换函数同样兼容了老版本的浏览器。在函数内部,首先通过传入的时间戳参数...

    date_时间转换_时间戳转换_

    这个压缩包文件的标题"date_时间转换_时间戳转换_"表明它包含了一个小程序,该程序能实现时间戳与日期、时间之间的相互转换。让我们详细探讨一下这个主题。 时间戳(Timestamp)是一种在计算机系统中表示特定时刻的...

    时间戳转换工具.rar

    这个工具的使用非常简单,开发者只需要输入一个时间戳值,程序就能将其转化为"yyyy-MM-dd HH:mm:ss"的格式,这对于查看日志文件、分析事件发生顺序或者处理与时间相关的数据时非常有用。 在实际开发中,时间戳的...

    C# DateTime与时间戳转换实例

    本篇文章主要介绍了C# DateTime与时间戳转换实例,包括JavaScript时间戳和Unix时间戳的相互转换。 时间戳的定义 时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数或总秒数。JavaScript时间戳...

    js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)

    文章通过对`formatDate`函数的细致讲解,帮助读者理解如何将JavaScript中的时间戳转换成易读的格式化日期字符串。这一过程不仅涉及了JavaScript中的日期时间处理,还涵盖了ES6新特性在实际开发中的应用。通过阅读和...

    时间戳转换器

    在大多数编程语言中,你可以直接将时间戳转换为日期对象,反之亦然。 2. **毫秒级时间戳**:在需要更高精度的情况下使用,例如在高频率交易或实时数据分析中。这种时间戳增加了时间单位,可以精确到毫秒。 3. **...

    DateHelper日期和时间戳之间的相互转换可用于浏览器和NodeJS

    "DateHelper"是一个专门针对日期和时间戳转换的库,它支持在浏览器环境和Node.js环境中使用,这使得开发者在跨平台开发时能够有一致的日期处理体验。下面将详细探讨DateHelper库的特性、用法以及如何在实际项目中...

    javascript时间戳与时间格式自由转换,可从时间到时间戳,也可从时间戳到任意指定时间格式

    了解这些基本概念后,你可以根据实际需求将`timeToDate.js`函数整合到你的项目中,无论是将服务器返回的时间戳转换为用户友好的日期,还是将用户输入的日期转换为时间戳以便发送请求,都将变得更加便捷。在使用时,...

    时间戳转成时间格式

    下面我们将详细介绍如何使用JavaScript将时间戳转换为可读的时间格式。 #### JavaScript中获取时间戳 在JavaScript中,可以通过以下几种方式获取时间戳: 1. **使用`Date.now()`**:这个方法返回从1970年1月1日00...

    JS实现时间戳转换工具

    在本项目中,我们关注的是JS如何实现时间戳转换工具,这在不连外网的办公环境中尤其有用,因为它可以帮助开发者和用户在本地进行时间相关的计算和转换。 时间戳,通常指的是自1970年1月1日(UTC/GMT的午夜)开始所...

    KETTLE时间戳-源数据自带时间

    - 在进行时间转换时,使用"日期/时间转换"(Date/Time Converter)步骤可以确保正确处理时间戳。 - 使用"字段检查器"(Field Inspector)或"预览"功能来验证时间戳数据在转换过程中的完整性和准确性。 5. **...

    JavaScript时间与时间戳的转换操作实例分析

    在日常开发中,还应关注JavaScript中时间与日期操作的其他技巧和细节,例如时间间隔的计算、日期的比较、格式化输出等,这些技巧的灵活运用可以帮助我们更好地处理时间相关的数据。同时,针对常见的JavaScript编程中...

    时间戳转换为时间 年月日时间的JS函数

    时间戳转换为时间年月日时间的JS函数知识点: 在JavaScript编程中,时间戳是指从1970年1月1日(UTC时间)开始所经过的毫秒数。在实际开发过程中,我们经常需要将时间戳转换为人们易于阅读和理解的日期格式。这就...

    时间戳(秒)转换为日期时间,不用库文件,方便跨平台使用

    在JavaScript中,没有内置的方法直接将时间戳转换为日期时间字符串,但我们可以使用`Date`对象构造函数并结合模板字符串来达到目的: ```javascript let timestamp = Math.floor(Date.now() / 1000); // JavaScript...

    timestamp-date-chrome:用于将时间戳转换为日期时间的 Chrome 扩展

    这个扩展在日常工作中非常实用,特别是在处理与时间相关的数据时。 【描述】中提到,"时间戳日期Chrome" 扩展是一个便捷的工具,可以方便地处理时间戳与日期时间之间的转换。对于开发者和数据分析人员来说,能够...

    JS点击按钮实现时间戳与标准日期的相互转换

    总的来说,理解并熟练掌握JavaScript中的日期和时间戳转换,对前端开发者来说至关重要,因为它在数据展示、数据存储以及与后端交互等方面都发挥着关键作用。通过以上内容,你应该能够实现标题和描述中提到的功能,并...

    mysql 日期与时间的转换

    这些语言中的时间戳转换通常涉及到将Unix时间戳转换为本地时间格式,或者反之亦然。 ### 总结 通过以上介绍可以看出,在MySQL中进行日期和时间戳之间的转换是非常方便的,只需要使用几个简单的内置函数即可实现。...

    js代码-13位-时间戳转换时间格式

    本篇将详细讨论如何使用JavaScript将13位时间戳转换为易于阅读的日期和时间格式。 1. JavaScript内置日期对象:`Date` JavaScript提供了内置的`Date`对象,可以用于处理日期和时间。创建一个`Date`对象并传入...

    字符串和时间戳相互转换

    3. JavaScript中的字符串与时间戳转换: - `new Date()` 构造函数用于将字符串转换为日期对象。 ```javascript var dateString = "2023-03-15T10:30:00"; var dateObject = new Date(dateString); ``` - `...

Global site tag (gtag.js) - Google Analytics