본문 바로가기

iOS

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

반응형
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