所以我有一个API端点将日期作为数组返回给我,如下所示:
{
date: [
'2016',
'4',
'2',
'10',
'3',
'23'
]
}
将此变为日期对象的最简单/最简单的方法是什么,以便我可以对对象进行排序?缺少前导零和分钟的存在&小时让我觉得这很难?
答案 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.getTime
和Array.sort
函数对&#34;日期&#34;(转换后)数组进行排序的扩展解决方案:
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;