반응형
let now = Date()
let calendar = Calendar.current
let year = calendar.component(.year, from: now)
let month = calendar.component(.month, from: now)
let day = calendar.component(.day, from: now)
let firstDayOfMonth = calendar.date(from: DateComponents(year: year, month: month, day: 1))!
let firstMonday = (firstDayOfMonth.weekdayOrdinal - 1) % 7 + 1
let weekNumber = (day + firstMonday - 1) / 7 + 1
print("오늘은 이번 달의 \(weekNumber)번째 주입니다.")
일단 1일이 포함된 주를 1주차로 가정하고 계산하는 코드는 위와 같습니다.
하지만, 목요일이 포함되어야 해당 월의 주로 인정됩니다.(국제표준 ISO-8601)
해당 기준을 적용한 코드는 아래와 같습니다.
let now = Date()
let calendar = Calendar.current
let year = calendar.component(.year, from: now)
let month = calendar.component(.month, from: now)
let day = calendar.component(.day, from: now)
let firstDayOfMonth = calendar.date(from: DateComponents(year: year, month: month, day: 1))!
let firstThursday = (5 - (calendar.component(.weekday, from: firstDayOfMonth) + 5) % 7) % 7 + 1
let daysSinceFirstThursday = (day - firstThursday + 7) % 7
let weekNumber = (daysSinceFirstThursday / 7) + 1
print("오늘은 이번 달의 \(weekNumber)번째 주입니다.")
반응형
'iOS' 카테고리의 다른 글
[iOS]스터디 시작 (0) | 2017.08.28 |
---|