Dartにて週の開始日(DateTime)を取得する方法〔Flutter〕

Flutter
 

実現したいこと

Dartにてある日付(2022/11/02)からみた週の開始日(2022/10/31)を取得する方法をまとめます。

週の開始日はISOにより、その週の月曜日と決められているみたいですね。。(知らなかった)

その日付(DateTime)を取得する方法をまとめます。

こちらも良かったら参考にしていただけると嬉しいです。

実装方法

ソース

引数で受け取るdateという日付の開始日を計算して値を返します。

// dateの開始月を取得する
DateTime getStartWeek(DateTime date) {
  var startweek = date.subtract(Duration(days: date.weekday - 1));
  return startweek;
}

解説

大まかに言えば、

日付(date)のweekday – 1だけ戻した値がその週の月曜になり、それが週の開始日となる
ということです。

詳細を2つのポイントに分けて話していきます。

  • subtract
  • date.weekday – 1

subtract」はDateTimeのメソッドの一つであり、引数の値だけ日付を戻すイメージです。
今回はdaysという値が定義されているので、daysに定義された分だけ値を戻します。
(week,monthなどで週単位・月単位で値を戻すこともできます。)

「date.weekday – 1」は週の月曜の値を取得しようとしています。
dartでは週を数値で管理しています。(例えば、日:0/月:1/火:2/…)
date.weekdayだけ戻してしまうとその値は0になってしまうので、月曜を指定したいということでsutractの-1(weekdayに+1しているということ)にしているということです。

コメント

タイトルとURLをコピーしました