日付の扱いがややこしい
プログラムで日付を扱うのって少しややこしいな、と感じたので「特定の日付から、x日前・後」を実装するチュートリアルを作成しました。
まずは基本:本日、この瞬間を取得
const nowDate = new Date();
文字列の日付データをdateデータに変換
//!バックエンドから受け取った時などは文字列のため
const dateString = "2024-09-04T00:00:00.000Z";
const someDate = new Date(dateString);
ポイントはdateオブジェクトの引数に文字列の日付情報を入れるとdateデータへと変換できる点です。
文字列のまま(dateString)の状態だと、日付の演算ができないため、dateデータ(someDate)に変換しています。
特定の文字列日付データから10日後を取得!
const dateString = "2024-09-04T00:00:00.000Z";
const someDate = new Date(dateString);
const dateAfterTenDays = new Date(someDate.setDate(someDate.getDate() + 10));
ポイントはsetDateメソッドとgetDateメソッドになるかと思います。
setDateメソッド
→日付データのうち、「日」を設定することができます。
getDateメソッド
→日付データのうち、「日」を返します
処理としてはまず、someDate.getDate() + 10
により、その日の「日」に10を加算します。
この時、元の「日」が31日であった場合41になります。
今回の例では、14になります。
次にsetDateメソッドにより、対象の「日」から+10した日付データを作成しています。
この時加算する値が大きくなってしまっても(41のように)問題ないです。加算していく中で30ないし、31を超えた場合は次の月に自動で進むようになってくれます。
最後に全体(someDate.setDate(someDate.getDate() + 10))をDateオブジェクトの引数に入れれば完了です。
終わり
以上により文字列の日付データから、その10日後の日付データを取得することができました。
加算のみでなく、減算も可能です。
dateの扱いがなんとなく理解できたので極めていきたいです✨