2016-04-04 10 views
0

だから私はこのような配列として私に日付を返すAPIエンドポイントを持っている:私は、オブジェクトを並べ替えることができるように日付コンポーネントの配列をJavaScriptの日付オブジェクトに変換するにはどうすればよいですか?

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

、日付オブジェクトにこれを有効にする最も簡単な/ tersest方法は何ですか?先行ゼロの欠如と分の存在&時間は私がそれがかなり難しいと思いますか?あなたの配列が固定されている場合は

+0

'新しいDate(...を)'、パラメータはあなたに依存パラメータソート。 –

答えて

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])))

+0

ありがとうございました:) –

+2

なぜ解析しなければならない文字列を作成するのですか?文字列ではなく、値としてDateコンストラクタに直接パーツを渡してください。 – RobG

+0

@ A1rPun私は以来私の答えを変更しました。 –

4

使用new Date()を使用することができます。

new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]); 
var date = new Date(object.date[0], object.date[1] - 1, object.date[2], object.date[3], object.date[4], object.date[5]); 
2

あなたは最も簡単な方法のために求めています。それから、あなたはここにいます。 DateのMDNの記事から

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

month引数は12月のために11年1月のための0から始まる、月を表す整数値です。つまり、実際の月の値を1減らす必要があります。

このソリューションでもspread operatorsが使用されています。 Date.getTimeArray.sort機能を使用して(変換後) "日付" の配列のソートのための

+0

何かを等しく簡潔にしたいが、すべての**ブラウザで動作させる場合は、最後の行を 'new Date(Date.UTC.apply(null、obj.date)) 'に置き換えますが、値はUTCとして扱われます。 – RobG

1

拡張ソリューション:

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>");

+0

@ NinaScholz、この著者のフレーズ「これを日付オブジェクトに変換してオブジェクトを並べ替えることができますか?」に注意してください。あなたは思いませんか? – RomanPerekhrest

関連する問題