[解決済み] JavaScriptで今日から3ヶ月前の日付を計算するには?
2022-04-19 05:53:17
質問
現在の日付から3ヶ月前の日付を入力しようとしています。以下のコードで現在の月を取得します。
var currentDate = new Date();
var currentMonth = currentDate.getMonth()+1;
日付(のオブジェクト)を計算し、フォームを作成するロジックを教えてください。
Date
月が1月(1)の場合、3ヶ月前の日付はOCtober(10)になることを考慮したデータ型)ですか?
どのように解決するのですか?
var d = new Date();
d.setMonth(d.getMonth() - 3);
これは1月でも有効です。 このスニペットを実行してください。
var d = new Date("January 14, 2012");
console.log(d.toLocaleDateString());
d.setMonth(d.getMonth() - 3);
console.log(d.toLocaleDateString());
注意点があります・・・。
1ヶ月というのは不思議なものですね。 1ヶ月をどう定義するのか? 30日ですか? ほとんどの人は、1ヶ月前とは前月の同じ日のことだと言うでしょう 要引用 . しかし、半分以上は30日前ではなく、31日前なのです。 また、今日がその月の31日(8月や12月でない場合)、その日は前月には存在しないのです。
興味深いことに、GoogleはJavaScriptに尋ねると同意します。 ある月の前の日は何日ですか :
また、次のように書かれています。 1ヶ月は30.4167日 :
では、3月31日の1ヶ月前と、3日前の3月28日の1ヶ月前とは同じ日なのでしょうか? これはすべて、"1ヶ月前"の意味によるものです。 プロダクトオーナーと会話してください。
momentjsのように、月の最終日に移動することでこれらの最終日エラーを修正したい場合は、次のようにします。
const d = new Date("March 31, 2019");
console.log(d.toLocaleDateString());
const month = d.getMonth();
d.setMonth(d.getMonth() - 1);
while (d.getMonth() === month) {
d.setDate(d.getDate() - 1);
}
console.log(d.toLocaleDateString());
もし、あなたの要求がもっと複雑なら、数学を使ってコードを書いてください。 あなたは開発者です! ライブラリをインストールする必要はありません! stackoverflowからコピー&ペーストする必要はありません! あなたが必要とすることを正確に行うために、自分でコードを開発することができます!
関連
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueの要素ツリーコントロールに破線を追加する説明
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
Vueの「データを聴く」原則を解説
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)