TIL59 - 날짜판별

future0159 2월 27일 PM 06:20 10 1
future0159 Profile Image Level 9
1

Date 타입 객체를 가지고 며칠 차이가 나는지 구하는 방법입니다.
일반적인 Calender.current 를 통해서 day차이를 구할때 단점은, 우리의 생각은 17일 오후10시와 18일 오전1시는 하루가 차이나지만, 해당 방식은 0일차이가 난다고 결론합니다.
따라서 DateFormatter로 날짜형식을 바꾼뒤 날짜차이를 결정해야 합니다.


extension Date {
    var differenceOfToday: String {
        let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "ko-kr")
        dateFormatter.dateFormat = "yyyy-MM-dd"
        
        let currentDateString = dateFormatter.string(from: self)
        let todayDateString = dateFormatter.string(from: Date())
        
        guard let currentDate = dateFormatter.date(from: currentDateString),
              let todayDate = dateFormatter.date(from: todayDateString) else { return ""}
        
        
        let differenceOfDay = Calendar.current.dateComponents([.day], from: todayDate, to: currentDate).day ?? 0
        
        if differenceOfDay == 0 {
            return "오늘"
        } else if differenceOfDay > 0 {
            return "\(abs(differenceOfDay))일후"
        } else {
            return "\(abs(differenceOfDay))일전"
        }
    }
}
댓글