JavaScript 获取当前时间和时间戳 时间戳和日期格式的转换

function CurentTime(){
                var now = new Date();
                var year = now.getFullYear(); //年
                var month = now.getMonth() + 1;  //月
                var day = now.getDate(); //日


                var hh = now.getHours();  //时
                var mm = now.getMinutes(); //分


                var clock = year + "-";


                if(month < 10)clock += "0";clock += month + "-";
                if(day < 10)clock += "0";clock += day + " ";
                if(hh < 10)clock += "0";clock += hh + ":";
                if (mm < 10) clock += '0';clock += mm;
                return(clock);
}

  • JS获取当前时间戳的方法

    第一种方法:

    var  timestamp  =  Date.parse( new  Date());  

    结果:1477808630000 不推荐这种办法,毫秒级别的数值被转化为000

    var  timestamp  =  ( new  Date()).valueOf();

    结果:1477808630404 通过valueOf()函数返回指定对象的原始值获得准确的时间戳值

    第三种方法:

    var timestamp = new  Date().getTime()

    结果:1477808630404 ,通过原型方法直接获得当前时间的毫秒值,准确

    第四种方法:

    var timestamp4=Number(new Date())

    结果:1477808630404 ,将时间转化为一个number类型的数值,即时间戳


  • 时间戳转时间
方法1:
var time = new Date(1526572800000); //直接用 new Date(时间戳) 格式转化获得当前时间
console.log(time); // VM626:2 Fri May 18 2018 00:00:00 GMT+0800 (中国标准时间)
var times = time.toLocaleDateString().replace(/\//g,"-")+" "+time.toTimeString().substr(0,8);          
//再利用拼接正则等手段转化为yyyy-MM-dd hh:mm:ss 格式
console.log(times); //  2018-5-18 00:00:00

不过这样转换在某些浏览器上会出现不理想的效果,因为toLocaleDateString()方法是因浏览器而异的,比如 IE为2016年8月24日 22:26:19 格式
 搜狗为Wednesday, August 24, 2016 22:39:42, 可以通过分别获取时间的年月日进行拼接,如方法2

方法2:
var now = new Date(1526572800000),
y = now.getFullYear(),
m = now.getMonth() + 1,
d = now.getDate(),
x = y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d) + " " + now.toTimeString().substr(0, 8);
console.log(x); // 2018-05-18 00:00:00
封装方法:

formatAdd(m){
    return m<10?'0'+m:m
},
formatTime(timeStamp){
    var time = new Date(timeStamp);
    var y = time.getFullYear();
    var m = time.getMonth()+1;
    var d = time.getDate();
    var h = time.getHours();
    var mm = time.getMinutes();
    var s = time.getSeconds();
    return y+'-'+this.formatAdd(m)+'-'+this.formatAdd(d)+' '+this.formatAdd(h)+':'+this.formatAdd(mm)+':'+this.formatAdd(s);
},

  • 当前时间转时间戳

var strtime = '2014-04-23 18:55:49:123';
var date = new Date(strtime); //传入一个时间格式,如果不传入就是获取现在的时间了,这样做不兼容火狐。
// 可以这样做var arr = strtime.replace(/ |:/g, '-').split('-');
date = new Date(Date.UTC(arr[1], arr[2], arr[3], arr[4], arr[5]));

//三种方式获取:
time1 = date.getTime();
time2 = date.valueOf();
time3 = Date.parse(date);

//三种获取的区别:
第一、第二种:会精确到毫秒
第三种:只能精确到秒,毫秒将用0来代替
比如上面代码输出的结果(一眼就能看出区别):
    1398250549123
    1398250549123
    1398250549000

猜你喜欢

转载自blog.csdn.net/weixin_42333548/article/details/80539239