2011-07-13 20 views
5

私はこの日付を15-07-2011の文字列としてdd-mm-yyyyの形式にしています。この文字列からDateオブジェクトを作成する必要がありました。だから、dd-mm-yyyyの日付をmm-dd-yyyyの形式に変換する必要があります。JDreamerでdd-mm-yyyyをmm-dd-yyyy形式に変換するクリーナー

私がしたことは次のとおりです。

var myDate = '15-07-2011'; 
var chunks = myDate.split('-'); 

var formattedDate = chunks[1]+'-'+chunks[0]+'-'+chunks[2]; 

今私はmm-dd-yyyyフォーマットである文字列を2011年7月15日を持って、私はDateオブジェクトを作成するDate()コンストラクタに渡すことができます。私はこれを行うためのクリーンな方法があるかどうかを知りたい。

+5

それは私には十分にきれいに見えるという名前の文字列を書式設定、解析のためのライブラリを書きました。 – MRAB

+0

あなたはもっと短いのですか? – William

+0

@Limeいいえ、私はよりクリーンで広く受け入れられている練習を意味しました。 – Sparky

答えて

5

それはそのままでとてもきれいです。

+0

すべての回答はとても助かりました。エドガー・ボネットには、彼の有益なコメントがいっぱいあります。彼が答えていれば、私は彼が受け入れられた答えとして選んだだろう(Paul Sonierや答えた/コメントした人のことを意味する犯罪ではない。ありがとうございます。 – Sparky

2

文字列のチャンクを並べ替えることは、完全に「クリーン」かつ正当な方法で日付形式を変更することです。

しかし、もしあなたがそれに満足していないのであれば(あなたが再配列している文字列が実際に有効な日付であることを知りたいのですが)、私はDateJSを見ることをお勧めします。 Javascriptのための特集した日付処理ライブラリ。

+0

DateJSへのポインタありがとう。しかしおそらく私の要求はdd-mm-yyyyをmm-dd-yyyyに変換するだけなので、現在の方法に固執すべきです。それだけで別の図書館のオーバーヘッドを望んでいないでしょう。 – Sparky

-2

myDate.format("mm-dd-yyyy"); 
+1

'試着'?そしていつプログラミングはランダムなものを試すことに基づいていましたか? '#format'は、' Date.prototype'がそのようなメソッドで拡張されている場合にのみ機能します。 –

+0

'myDate'は日付でもありません:それは文字列です!そして、この仮説的な 'format()'メソッドは 'String.prototype'になければなりません。 –

1

をお試しくださいあなたはいくつかは、これはきれいですが、それは基本的に同じことを言うだろうクリーナー

var myDate = '15-07-2011'; 
var chunks = myDate.split('-'); 
var formattedDate = [chunks[1],chunks[0],chunks[2]].join("-"); 

によって何を意味するかによって異なります。

1
var formattedDate = chunks[1] + '-' + chunks[0] + '-' + chunks.pop(); 
+0

3つの文字を追加して、役に立たない関数呼び出しを私に追加したようです。 – cbrandolino

+0

ありがとうございます。しかし、なぜ配列インデックスを正確に知っていて、変更されない場合にpop()を使用するのですか? – Sparky

+0

配列のインデックスが分からず、それ以降もチャンクが必要ない場合は、配列の最後の要素を参照するのがより速くなります。あなたのコードがミッションクリティカルなものであれば、@cbrandolinoのような役に立たない関数呼び出しは必要ありません。 –

1

場合によっては、いくつかの変数を減らすことができます。

var date = '15-07-2011'.split('-'); 
date = date[1]+'-'+date[0]+'-'+date[2]; 

私はあなたのソリューションは、完全に有効ですが、私の意見を追加します

var date = '15-07-2011'.replace(/(\d*)-(\d*)-(\d*)/,'$2-$1-$3') 
+0

ありがとうライム。正規表現は私のものではありません:) – Sparky

+1

うわー彼らは 'new Date()'が受け入れるかもしれない特定のテキストフォーマットに依存しないので、かなり醜い^ _^ – William

1
var c = '01-01-2011'.split('-'); 
var d = new Date(c[2],c[1]-1,c[0]); 
+1

+1です。 –

+0

なぜそれはc [1] -1と書かれていますか? – Sparky

+1

@ Sparky:Dateオブジェクトは0から始まる月を1月とみなします。 –

0

1つのライナーをしたい場合は、別の何かしたい場合:

var myDate = '15-07-2011'; 
myDate.split('-').reverse().join('-'); 

をあなたに尋ねたことは正確ではありませんが、によって適切に解析される「2011-07-15」を提供します

0

0私は、操作、およびMoment.js

var date = moment('15-07-2011', 'DD-MM-YYYY').format('DD-MM-YYYY'); 
関連する問題