2011-06-21 20 views
11

私は働いている会社のプロジェクトを継承しました。日付は次の形式で記録されます。Javascript日付+ユニークな書式設定に1日追加する?

2011年3月18日は「2011年3月18日」と表示されます。

2010年4月31日は「2010年4月31日」と表示されます。

上記の方法でフォーマットされた日付に1日追加するには、どうすればJavascriptを使用して、それを同じ形式に戻しますか?

"2011年3月18日"に1日追加し、 "2011年3月19日"を返す関数を作成したいと考えています。または、2011年6月30日に1日追加し、2011年7月1日を返します。

誰でもお手伝いできますか?

答えて

22

まず4月のない31日はありません。)

は、実際の問題への引数として渡されたときに、日付オブジェクトが現在のフォーマットを理解することができますが...

var dateString = '30 Apr 2010'; // date string 
var actualDate = new Date(dateString); // convert to actual date 
var newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+1); // create new increased date 

// now extract the bits we want to crete the text version of the new date.. 
var newDateString = ('0'+newDate.getDate()).substr(-2) + ' ' + newDate.toDateString().substr(4,3) + ' ' + newDate.getFullYear(); 

alert(newDateString); 

デモhttp://jsfiddle.net/gaby/jGwYY/1/


用いて同じ抽出(よりよいサポートslice代わりにhttp://jsfiddle.net/jGwYY/259/

+0

パーフェクトおかげでsubstr

// now extract the bits we want to crete the text version of the new date.. var newDateString = ('0'+newDate.getDate()).slice(-2) + ' ' + newDate.toDateString().slice(4,7) + ' ' + newDate.getFullYear(); 

デモ!それを感謝します、私は推測する日APiにもっと快適になる必要があります。 – Walker

+1

何か言及しなければならないのは、月は0でインデックスされるということです。したがって、「4月」は「3」に対応します。 – Jeroen

+0

+1「4月の31日はありません」) –

1

日付文字列をDateオブジェクトに変換し、オブジェクトに1日を追加してから変換することをお勧めします。 DateのAPIドキュメントを参考にしてください。

0

ブラウザを使用して、Dateオブジェクトを持っていたら、あなたはunderscore.dateのようなものを使用して、昼と出力フォーマットされた日付文字列を追加することができ、簡単な

var parsedDate = new Date(dateString); 

でその日付の文字列を解析することができるようになります(すべて?)ほとんどの。

一部のブラウザでは、その日付形式を解析できないことがわかっている場合は、日付文字列を構成部分に分解して手作業でDateインスタンスを構築する非常に単純な正規表現を書くことができます。

また、別の関数で解析することを強くお勧めします。可能であれば、Date表現で日付を保持してください。できるだけ早く文字列を解析し、できるだけ遅く文字列に戻します。