JavaScriptで日付を加減算するには?
JavaScriptを使って、ユーザーが簡単に日付を足したり引いたりできるようにして、エントリーを日付順に閲覧できるようにしたいのです。
日付のフォーマットは"mm/dd/yyyy"です。quot;Next"ボタンをクリックし、日付が" 06/01/2012"であれば、次をクリックすると、それは"06/02/2012"になります。prev'ボタンをクリックすると、"05/31/2012"となります。
うるう年や月の日数などを記録する必要があります。
何かアイデアはありますか?
P.S.サーバーから日付を取得するためにAJAXを使うという選択肢はありません。
67
13
**コード:***
getTime()
とsetTime()
を使用して、javascript Dateオブジェクトに時間を追加または減算する必要があります。setDate()
とgetDate()
を使用すると、1、30、31などの制限に達したときにエラーが発生します。.setTimeを使用すると、オフセットをミリ秒単位で設定し、Dateオブジェクトに残りの値を算出させることができます。
JavaScript
Date
オブジェクトはここで役立ちます。最初のステップは、これらの文字列を「日付」インスタンスに変換することです。 それは簡単に行われます:
次に、あらゆる種類の有用な計算を行うことができます。 JavaScriptの日付はうるう年などを理解しています。 彼らは、正確に* 86,400秒の長さの「日」の理想的な概念を使用しています。 それらの基礎となる値は、エポック以降のミリ秒数です(1970年1月1日の真夜中)。エポックの前の日付の負の数になる可能性があります。
Date
のMDNページの詳細。MomentJSのようなライブラリの使用を検討することもできます。これは、解析、日付計算、フォーマットに役立ちます。..
これが役立つかもしれません。
ここで試すことができます:http://jsfiddle.net/ZQAHE/。
JavaScriptで日付を操作することは、常に少し面倒です。 私はいつも図書館を使うことになります。 Moment.jsとXDateはどちらも素晴らしいです。
http://momentjs.com/。
http://arshaw.com/xdate/。
フィドル:
http://jsfiddle.net/39fWa/。
。
私が好きなのは、日付オブジェクトがある場合、そこから別の日付オブジェクトを差し引いて差を取得できることです。 日付オブジェクトは、特定の日付からのミリ秒に基づいています。
これが日付を差し引く方法です。 それらを追加したい場合は、今? date1 + date2はエラーを示します。. しかし、msで時間を取得したい場合は、次のことができます。
0を差し引くと、日付オブジェクトがミリ秒形式に変わります。
javascriptネイティブのDateオブジェクトを使って日付を管理することができます。現在の日付を取得したり、カレンダー固有の情報を記録したり、異なるタイムゾーンを管理したりすることができます。日/時間/秒を足したり引いたりすることで、作業中の日付を変更したり、新しい日付を計算したりすることができます。
詳しくはこのオブジェクトリファレンスをご覧ください:
[日付][1]
お役に立てれば幸いです!
日付を追加するためのこれらすべての関数は間違っています。 間違った月を日付関数に渡しています。 問題の詳細情報: http://www.domdigger.com/blog/?p = 9。
これは、数か月および数年にわたって追加/減算するときに確実に機能する唯一のソリューションです。 これは、月/年のシフトに合わせて調整しようとして、getDateメソッドとsetDateメソッドをいじくり回すのにあまりにも多くの時間を費やした後に実現しました。
decasteljau(このスレッド内)はすでにこれに回答していますが、回答の90%がgetDateおよびsetDateアプローチを推奨しているため、このメソッドの有用性を強調したいだけです。
私が使用した最高の日付ユーティリティは、いくつかの理由でdate-fnsです。
-ネイティブJavaScriptの「日付」形式を使用します。 -不変;純粋な関数を使用して構築され、渡されたものを変更する代わりに常に新しい日付インスタンスを返します。 -モジュラー;必要な機能だけをインポートします。
パッケージマネージャー:
"date-fns ":" ^ 1.30.1 "
。コード:
'date-fns'から{addDays、subDays}をインポートします
。シンプルで素晴らしい。
私が使用しているもの(必要なjquery)、私のスクリプトでは現在の日に必要ですが、もちろんそれに応じて編集することもできます。
HTML:
JavaScript:
[jsfiddle][1]。
[1]:https://jsfiddle.net/noyot2yq/ "jsfiddle"。