본문 바로가기

Flutter

[Flutter]해당 날짜가 월의 몇 주차인지 구하는 방법

반응형
void main() {
  var now = DateTime.now();
  var firstDayOfMonth = DateTime(now.year, now.month, 1);
  var firstMonday = firstDayOfMonth.weekday <= 1 ? 1 : 8 - firstDayOfMonth.weekday;
  var weekNumber = ((now.day + firstMonday - 1) ~/ 7) + 1;
  print('오늘은 이번 달의 ${weekNumber}번째 주입니다.');
}

일단 1일이 포함된 주를 1주차로 가정하고 계산하는 코드는 위와 같습니다.

 

하지만, 목요일이 포함되어야 해당 월의 주로 인정됩니다.(국제표준 ISO-8601)

해당 기준을 적용한 코드는 아래와 같습니다.

 

void main() {
  var now = DateTime.now();
  var firstDayOfMonth = DateTime(now.year, now.month, 1);
  var firstThursday = firstDayOfMonth.add(Duration(days: (11 - firstDayOfMonth.weekday) % 7));
  var daysSinceFirstThursday = now.difference(firstThursday).inDays;
  var weekNumber = (daysSinceFirstThursday / 7).floor() + 1;
  print('오늘은 이번 달의 ${weekNumber}번째 주입니다.');
}

 

반응형