Как получить диапазон дат для определенного номера недели - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь получить диапазон дат для определенного номера недели.

Ниже приведен мой код для получения номера недели относительно текущей даты

final date = DateTime.now();
final startOfYear = new DateTime(date.year, 1, 1, 0, 0);
final firstMonday = startOfYear.weekday;
final daysInFirstWeek = 8 - firstMonday;
final diff = date.difference(startOfYear);
var weeks = ((diff.inDays - daysInFirstWeek) / 7).ceil();

if (daysInFirstWeek > 3) {
  weeks += 1;
}
print("Week Range $weeks");

Что я не понимаютаким образом я получаю дату начала и окончания для определенного номера недели.

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Предполагая, что ваша неделя основана на нуле, вам нужно сделать что-то вроде этого:

final date = new DateTime.now();
final startOfYear = new DateTime(date.year, 1, 1, 0, 0);
final firstMonday = startOfYear.weekday;
final daysInFirstWeek = 8 - firstMonday;
final diff = date.difference(startOfYear);
var weeks = ((diff.inDays - daysInFirstWeek) / 7).ceil();


main(){
  int week = weeks;
  print("Start Date for week $week: ${startOfYear.add(Duration(days: 7*week))}");
  print("End Date for week $week: ${startOfYear.add(Duration(days: 7*week+6))}");
}
0 голосов
/ 10 мая 2019

Чтобы узнать начало и день недели из номера недели и года.

DateTime getDateByWeekNumber({
  int weeknumber,
  int year,
  bool start
}) {
  //check if start == true retrun start date of week
  //else return end date
  var days = ((weeknumber - 1) * 7) + (start ? 0 : 6);
  return DateTime.utc(year, 1, days);
}

Это соответствует ISO 8601. Вы можете очень недельный номер здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...