flutter 在抖动中获取给定周数的日期

olqngx59  于 2023-02-20  发布在  Flutter
关注(0)|答案(2)|浏览(139)

我想知道如何获得给定周数的日期。例如:如果我知道2021年的第52周,那么我想知道第52周的哪几天,我怎么用flutter得到这个?

3lxsmp7m

3lxsmp7m1#

不知道Flutter里有没有类似的东西。
所以这是一个长期的解决方案。考虑到我们已经有一年了;

**第一步:**你可以将数字除以4,然后取下限,这样就给予了月份。
**第2步:**然后您可以从计算出的月份和4的倍数中减去给定的数字。这将为您提供该月的星期。
**第3步:**现在,对于日期,您可以将7乘以该月的星期。这将为您提供日期。
**第4步:**现在您可以使用DateTime().day获取该周的开始日期,然后从那里继续。

下面是一个工作示例:

week = 13
Step 1: 13/4 = 3.25. => 3rd month
Step 2: 3*4 = 12 
        13-12 = 1 => 1st week of the month
Step 3: 7*1 => 7th day of the month
Step 4: DateTime(2021, 3, 7).day // output: 7 which means Sunday.
flvlnr44

flvlnr442#

我不知道这是否仍然需要,但我遇到了同样的问题,我必须解决。这真的没有任何关系,Flutter-这是 dart 唯一的问题。
下面是我的解决方案:注:我测试了几个日期/星期,它似乎工作正常。

WeekDates getDatesFromWeekNumber(int year, int weekNumber) {
  // first day of the year
  final DateTime firstDayOfYear = DateTime.utc(year, 1, 1);

  // first day of the year weekday (Monday, Tuesday, etc...)
  final int firstDayOfWeek = firstDayOfYear.weekday;

  // Calculate the number of days to the first day of the week (an offset)
  final int daysToFirstWeek = (8 - firstDayOfWeek) % 7;

  // Get the date of the first day of the week
  final DateTime firstDayOfGivenWeek = firstDayOfYear
      .add(Duration(days: daysToFirstWeek + (weekNumber - 1) * 7));

  // Get the last date of the week
  final DateTime lastDayOfGivenWeek =
      firstDayOfGivenWeek.add(Duration(days: 6));

  // Return a WeekDates object containing the first and last days of the week
  return WeekDates(from: firstDayOfGivenWeek, to: lastDayOfGivenWeek);
}

WeekDates对象定义为:

class WeekDates {
  WeekDates({
    required this.from,
    required this.to,
  });

  final DateTime from;

  final DateTime to;

  @override
  String toString() {
    return '${from.toIso8601String()} - ${to.toIso8601String()}';
  }
}

相关问题