如何使用Javascript将毫秒转换为可读日期?

时间:2014-09-24 01:21:33

标签: javascript jquery date

我有一个毫秒整数,我试图将其转换为格式为yyyy MM dd的可读日期(2014-08-06)。

var maxDate = 1407267771429;
maxDate = new Date(maxDate);
maxDateFinal = maxDate.toString('yyyy MM dd');

WORKING EXAMPLE

虽然maxDateFinal似乎总是等于Wed Aug 06 2014 05:42:51 GMT+1000 (E. Australia Standard Time)

我在我的小提琴中每次调用后都添加console.log()来演示变量的变化,尽管似乎toString()对日期完全没有任何作用。

2 个答案:

答案 0 :(得分:3)

JavaScript没有内置日期格式。你可以自己做,但也有一些库。

function pad(s, width, character) {
    return new Array(width - s.toString().length + 1).join(character) + s;
}

var maxDate = new Date(1407267771429);
var maxDateFormatted =
    maxDate.getFullYear() +
    ' ' + pad(maxDate.getMonth() + 1, 2, '0') +
    ' ' + pad(maxDate.getDate(), 2, '0');

答案 1 :(得分:3)

不幸的是,JavaScript Date没有使用toString()方法(或任何其他方法)提供任意格式。要以yyyy-mm-dd格式获取日期,您可以使用toISOString(),然后使用substr(start, length)方法。例如:

var maxDate = new Date(1407267771429);
var isoDate = maxDate.toISOString(); // 2014-08-05T19:42:51.429Z
isoDate.substr(0, 10); // 2014-08-05

这适用于所有主流浏览器,包括IE9 +。要支持IE8和旧版浏览器,您可以执行以下操作:

function toISODate(milliseconds) {
    var date = new Date(milliseconds);
    var y = date.getFullYear()
    var m = date.getMonth() + 1;
    var d = date.getDate();
    m = (m < 10) ? '0' + m : m;
    d = (d < 10) ? '0' + d : d;
    return [y, m, d].join('-');
}

或者你可以看一下像Moment.js(http://momentjs.com/)或jquery-dateFormat(https://github.com/phstc/jquery-dateFormat)这样的东西。