calculateWeekNumber method
int
calculateWeekNumber(
- dynamic date
)
Implementation
int calculateWeekNumber(var date) {
DateTime firstDayOfYear = DateTime(date.year, 1, 1);
int firstThursdayOffset = (4 - firstDayOfYear.weekday + 7) % 7;
DateTime firstThursday =
firstDayOfYear.add(Duration(days: firstThursdayOffset));
int daysSinceFirstThursday = date.difference(firstThursday).inDays;
int weekNumber = (daysSinceFirstThursday ~/ 7) + 1;
if (weekNumber <= 0) {
weekNumber = calculateWeekNumber(DateTime(date.year - 1, 12, 31));
}
DateTime lastDayOfYear = DateTime(date.year, 12, 31);
if (weekNumber > 52 && lastDayOfYear.weekday < 4) {
weekNumber = 1;
}
return weekNumber;
}