반응형
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}번째 주입니다.');
}
반응형
'Flutter' 카테고리의 다른 글
[Flutter] 플러터에서 SharedPreferences 사용하기(+Android, iOS 네이티브) (0) | 2023.04.26 |
---|