반응형
fun main() {
val now = DateTime.now()
val firstDayOfMonth = DateTime(now.year, now.month, 1)
val firstMonday = if (firstDayOfMonth.weekday.value <= 1) 1 else 8 - firstDayOfMonth.weekday.value
val weekNumber = (now.day + firstMonday - 1) / 7 + 1
println("오늘은 이번 달의 ${weekNumber}번째 주입니다.")
}
일단 1일이 포함된 주를 1주차로 가정하고 계산하는 코드는 위와 같습니다.
하지만, 목요일이 포함되어야 해당 월의 주로 인정됩니다.(국제표준 ISO-8601)
해당 기준을 적용한 코드는 아래와 같습니다.
import org.joda.time.DateTime
import org.joda.time.Days
import org.joda.time.DurationFieldType
import org.joda.time.Weeks
import org.joda.time.format.DateTimeFormat
fun main() {
val now = DateTime.now()
val firstDayOfMonth = DateTime(now.year, now.monthOfYear, 1, 0, 0)
val firstThursday = firstDayOfMonth.withFieldAdded(DurationFieldType.days(), (11 - firstDayOfMonth.dayOfWeek) % 7)
val daysSinceFirstThursday = Days.daysBetween(firstThursday, now).days
val weekNumber = Weeks.weeksBetween(firstThursday, now).weeks + 1
println("오늘은 이번 달의 ${weekNumber}번째 주입니다.")
}
반응형
'Android' 카테고리의 다른 글
[Android]2018년 8월 현재까지 안드로이드 OS 점유율 (0) | 2018.09.03 |
---|---|
[Android]2018.07 Android OS 점유율 (0) | 2018.07.12 |
[Android]안드로이드 오레오 버전 알림 채널 및 그룹(Notification Channel, Group) 간단 사용법 (3) | 2018.05.14 |
[Android]안드로이드 앱 최신 버전 체크(with Firebase Remote Config) (1) | 2018.05.02 |
[Android]커스텀 폰트 일괄 적용법 (4) | 2018.04.27 |