実現したいこと
Dartにてある日付(2022/11/02)からみた週の開始日(2022/10/31)を取得する方法をまとめます。
![](https://atsu-developer.net/wp-content/uploads/2022/11/スクリーンショット-2022-11-28-12.38.32-1024x390.jpg)
週の開始日は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しているということ)にしているということです。
コメント