Dart/Flutter 获得本周的第一个 DateTime

sha*_*que 2 datetime dart flutter

在 android 上使用 flutter 我试图获得本周的第一个日期。例如,今天是 13/7/2020,假设一周从星期六开始,那么本周的第一个日期将是 11/7/2020。

这例如获取月份的第一个日期

DateTime firstDay = new DateTime(
  DateTime.now().year,
  DateTime.now().month,
  1,
); //get first date this month
Run Code Online (Sandbox Code Playgroud)

最终目标是获取该日期的时间戳并从高于该日期的 sqflite 数据库中获取条目。

mah*_*esh 6

如果星期日是您一周的第一天。

var d = DateTime.now();
var weekDay = d.weekday;
var firstDayOfWeek = d.subtract(Duration(days: weekDay));
Run Code Online (Sandbox Code Playgroud)

根据 Flutter 文档weekDay返回

星期几 [星期一]..[星期日]。

  • 符合 ISO 8601
  • 一周从值为 1 的星期一开始。

如果星期一是一周的第一天,那么

var firstDayOfWeek = d.subtract(Duration(days: weekDay - 1));
Run Code Online (Sandbox Code Playgroud)

  • 如果星期日是一周的第一天,并且当前日期已经是星期日,则此答案将返回前一个星期日。 (3认同)