如何将日期组件数组转换为JavaScript日期对象?

时间:2016-04-04 08:06:26

标签: javascript arrays sorting date datetime

所以我有一个API端点将日期作为数组返回给我,如下所示:

{
  date: [
    '2016',
    '4',
    '2',
    '10',
    '3',
    '23'
  ]
}

将此变为日期对象的最简单/最简单的方法是什么,以便我可以对对象进行排序?缺少前导零和分钟的存在&小时让我觉得这很难?

4 个答案:

答案 0 :(得分:4)

使用new Date()进行月份更正(基于零)。

curve_fit
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

答案 1 :(得分:2)

你要求最简单的方法。那么你就到了。



var obj = {
  date: [
    '2016',
    '4',
    '2',
    '10',
    '3',
    '23'
  ]
};
--obj.date[1];
console.log(new Date(...obj.date));




Date的MDN文章中,month参数是表示月份的整数值,从1月的0开始到12月的11 。这意味着您需要将实际月份的值减少1.

此解决方案还使用spread operators

答案 2 :(得分:1)

如果您的阵列已修复,您可以使用以下

var dt={
  date: [
    '2016',
    '4',
    '2',
    '10',
    '3',
    '23'
  ]
};

//assuming first component is YYYY, second is MM, third is DD then HH:MM:SS
alert(new Date(dt.date[0]+"-"+((dt.date[1] - 1) < 10 ? "0" + (dt.date[1]-1) : (dt.date[1]-1))+"-"+ (dt.date[2] < 10 ? "0" + dt.date[2] : dt.date[2])  + "T" + (dt.date[3] < 10 ? "0" + dt.date[3] : dt.date[3]) + ":" + (dt.date[4] < 10 ? "0"+dt.date[4] :dt.date[4]) +":" + (dt.date[5] < 10 ? "0"+dt.date[5] :dt.date[5])))

答案 3 :(得分:1)

使用Date.getTimeArray.sort函数对&#34;日期&#34;(转换后)数组进行排序的扩展解决方案:

&#13;
&#13;
var dates = [
    { date: [ '2016','4','2','10','3','23'] },
    { date: [ '2016','4','1','10','3','23'] },
    { date: [ '2016','4','3','11','3','23'] }

];

dates.sort(function(a,b){
    // compound date string in form: "2016,4,2 10:3:23" to pass into Date constructor
    var aDate_str = a.date.slice(0,3).join() + " " + a.date.slice(3).join(":"),
        bDate_str = b.date.slice(0,3).join() + " " + b.date.slice(3).join(":"),
        aTime = (new Date(aDate_str)).getTime(), // getting date as the number of milliseconds
        bTime = (new Date(bDate_str)).getTime();

    return (aTime == bTime)? 0 : ((aTime < bTime)? -1 : 1);
});

document.write("<pre>" + JSON.stringify(dates, 0, 4) + "</pre>");
&#13;
&#13;
&#13;