2016-03-28 20 views
0

日付を文字列としてサーバーから取得する配列を取得するようになりました。今は日、月、年だけをフィルタリングしたいのです。フィルタ結果を特定の日付形式にフォーマットするにはどうすればよいですか?その後、日付文字列をJavascriptの適切な日付に変換する

var date = ['2015-02-04T23:54:00.000+01:00','2015-02-04T23:54:00.000+01:00', ...]; 

//wanted result: 2015-02-04 or 04.02.2015 
+2

方法(STRING); 'ループ内?そして、 'dateObj.getMonth()'、 'dateObj.getFullYear()' ... – Rayon

+0

あなたはこれのために瞬間を使うことができます –

答えて

1

のようなあなたの出力文字列を取得することができます: `新しい日付の使用に関する

var date = ['2015-02-04T23:54:00.000+01:00','2015-02-04T23:54:00.000+01:00']; 

date.map(function(_d) { 
    var d = new Date(_d) 
    return d.getFullYear() + '-' + d.getMonth() + 1 + '-' + d.getDay() 
} 

// if you want to get fancy, you could throw in this function to pad the days and months: 
var pad = function (n) {return n<10? '0'+n:''+n;} 

var sorted = date.map(function(_d) { 
    var d = new Date(_d) 
    return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDay()) 
}) 
console.log(sorted); 
+0

あなたは 'return d.toISOString()。split( 'T()を試すことができます。 ')[0] ' – Rajesh

+0

私があなたの提案を使用した場合、ここに私が得たものがあります:' 2015-02-04'。私のものを使って、私は '2015-02-03'を持っています。タイムゾーンの部分( 'T23:54:00.000 + 01:00')にどうやって対処していますか? – cl3m

+0

それは私のためにうまくいく:[JSFiddle](https://jsfiddle.net/RajeshDixit/0o1otxho/)。私はいくつかのタイムゾーンを試しましたが、わかりません。 – Rajesh

0

あなたが言及した形式が一致している場合は、:

date.forEach(function(d) { 
    d = d.substring(0, 10); 
}) 
+1

ほとんどのケースで動作しますが、日付が '2015-2-4T23:54: 00.000 + 01:00'? – Rayon

+2

私は言ったように、フォーマットが一貫している場合。フォーマットに矛盾がある場合は、クロスブラウザ対応のソリューションはないと思います。文字列を日付に変換する場合、 'new Date'の実装でさえも矛盾します。 –

1

日は、文字列の引数を取ることができます。 forループを使用してリストを反復処理し、それぞれに対して新しいDateオブジェクトを作成します。

var date = ['2015-02-04T23:54:00.000+01:00','2015-02-04T23:54:00.000+01:00'] 
var dateObjects = []; 

for (var i = 0; i<date.length; i++) { 
    d = new Date(date[i]); 
    dateObjects.push(d); 
} 

あるいは、単一の行に:今

var dateObjects = date.map(function (datestr) {return new Date(datestr)}); 

、あなたは、月の日を見つけることができ、かつ、以下の方法により、これらのいずれかから年:

var year = dateObjects[0].getFullYear(); // Gets the year 
var month = dateObjects[0].getMonth()+1; // Gets the month (add 1 because it's zero-based) 
var day = dateObjects[0].getDate(); // Gets the day of the month 

dateObjects[0]リストの最初の日付を参照する単なる例です。

だから、あなたは、あなたがあなたの何がこのようなISO日付フォーマットであることを見ています変換することができ

var dateStrings = dateObjects.map(function (item) { 
    return item.getFullYear()+"-"+(item.getMonth()+1)+"-"+item.getDate(); 
}) 
+1

このために 'Array.map'を試すことができます。 – Rajesh

+0

@Rajeshそれを指摘してくれてありがとう;) –

1
var date = ['2015-02-04T23:54:00.000+01:00','2015-02-04T23:54:00.000+01:00']; 
var newdateobject = []; 

$.each(date, function(key, e) { 
var a = new Date(e); 
    newdateobject.push(a.getFullYear()+'-'+(a.getMonth()+1) +'-'+a.getDate()); 
}); 
関連する問題