下面总结一下js中时间戳与日期格式的相互转换:

1. 将时间戳转换成日期格式:

1
2
3
4
5
6
7
8
9
10
11
12
function timestampToTime(timestamp) {
        var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
        Y = date.getFullYear() + '-';
        M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
        D = date.getDate() + ' ';
        h = date.getHours() + ':';
        m = date.getMinutes() + ':';
        s = date.getSeconds();
        return Y+M+D+h+m+s;
    }
    timestampToTime(1403058804);
    console.log(timestampToTime(1403058804));//2014-06-18 10:33:24

  注意:如果是Unix时间戳记得乘以1000。比如:PHP函数time()获得的时间戳就要乘以1000。

2. 将日期格式转换成时间戳:

1
2
3
4
5
6
7
8
var date = new Date('2014-04-23 18:55:49:123');
    // 有三种方式获取
    var time1 = date.getTime();
    var time2 = date.valueOf();
    var time3 = Date.parse(date);
    console.log(time1);//1398250549123
    console.log(time2);//1398250549123
    console.log(time3);//1398250549000

  以上三种获取方式的区别:

  第一、第二种:会精确到毫秒

  第三种:只能精确到秒,毫秒用000替代

  以上三个输出结果可观察其区别

  注意:获取到的时间戳除以1000就可获得Unix时间戳,就可传值给后台得到。

 

safari 兼容性问题:

1,safari浏览器只支持格式2018/02/02  8:12:45   

需要 进行转化 var date = new Date("2018-08-17 10:30".replace(/-/g, '/'));

2.HTML5中新增了日历控件,如果将控件的type=“datetime-local”,如果是Chrome,控件的日期显示格式是2016/05/30 08:00 ,如果是Safari,日期的显示格式是:2016-05-31T08:00,当我们用JQuery取值赋值的时候,就必须用这种方式才能赋值:假如说这个日历控件的id是timeDate,代码如下

$("#timeDate').val("2016-05-30T08:30");

用$("#timeDate').val("2016/05/30 08:30");就会报错。