안드로이드 개발 팁 #16 - 특정 일이 속하는 주의 모든 날짜를 배열로 구하는 방법

시작하며...

한 주의 일정을 보여주는 앱을 만든다고 가정해 봅시다. 주간 일정은 테이블로 보여줘야 하는데요. 오늘 또는 특정일이 속하는 주의 모든 날들(7일이죠)을 알아야 합니다. 예를 들어봅시다. 오늘이 8월 6일 토요일이면, 8월 1일 (월)부터 8월 7일 (일)까지가 필요한 거죠. 이것을 코드로 어떻게 구현할 수 있을까요? 그것이 이번 포스트의 주제입니다.


특정일이 속하는 주의 월요일 구하기

LocalDate 클래스를 활용하여 2022년 8월 3일이 속하는 주의 월요일을 구해보겠습니다.

val date = "2022-08-03"
val monday = LocalDate.parse(date).with(DayOfWeek.MONDAY)

특정일의 다음 날, 다다음 날 구하는 방법

위 코드에서 월요일을 구했지요. 그 다음날인 화요일을 구하려면 그것의 plusDays(1)을 호출하면 됩니다. 다다음날인 수요일을 구하려면, 월요일 객체로부터 plusDays(2)을 호출하면 되지요.

val date = "2022-08-03"
val monday = LocalDate.parse(date).with(DayOfWeek.MONDAY)
val tuesday = monday.plusDays(1)
val wednesday = monday.plusDays(2)

특정일이 속하는 주의 모든 일들을 배열로 구하는 함수

위에서 설명드린 내용을 베이스로 특정일이 속하는 주의 모든 일들을 배열로 구하는 함수를 아래와 같이 만들어 보았습니다.

// 특정일이 속하는 주의 모든 일들을 배열로 구한다.
fun getWeekdays(
    date: String    // 특정일 (예: "2022-08-03")
): Array<LocalDate> {
    // 특정일이 속하는 주의 월요일을 구한다.
    val monday = LocalDate.parse(date).with(DayOfWeek.MONDAY)

    // 해당 주의 모든 요일을 구하여 배열에 담는다.
    return arrayOf(
        monday,
        monday.plusDays(1),
        monday.plusDays(2),
        monday.plusDays(3),
        monday.plusDays(4),
        monday.plusDays(5),
        monday.plusDays(6)
    )
}

오늘이 속하는 주의 모든 요일들 구하기

오늘 날짜는 LocalDate.now() 메소드를 호출하여 구할 수 있고요. 그것의 toString() 메소드로 오늘 날짜를 문자열로 읽을 수 있습니다. getWeekdays 함수 호출시 date 파라메터에 LocalDate.now().toString()을 대입하면 됩니다.

fun getCurrentWeekdays(): Array<LocalDate> {
    return getWeekdays(LocalDate.now().toString())
}

지난 안드로이드 개발 팁

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.
default.jpg

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.029
BTC 62494.88
ETH 2428.89
USDT 1.00
SBD 2.65