적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Project/ToyProject_Couple App

[Swift iOS] calculate date 날짜 계산하기

hongssup_ 2021. 1. 27. 17:06
반응형

swift 내장 Calendar를 사용해서 날짜를 계산하는 법을 알아보자. 

1. D day 계산법

2. 기념일 계산법

let calendar = Calendar.current
let currentDate = Date()  
let dateFormatter = DateFormatter()
var daysCount:Int = 0

func calculateDays() {
    dateFormatter.dateFormat = "yyyy-MM-dd"
    let startDate = dateFormatter.date(from: "2020-09-13")
    daysCount = days(from: startDate) 
    let hundred = calendar.date(byAdding: .day, value: 100, to: startDate)
}
    
func days(from date: Date) -> Int {
    return calendar.dateComponents([.day], from: date, to: currentDate).day + 1
}

먼저 달력 기능과 오늘 날짜를 받아온다. 

currentDate를 print 해보니 2021-01-27 07:27:26 +0000 이렇게 나온다.

swift의 Date는 이런 식의 포맷을 가지고 있나보다. 년-월-일 시:분:초 +?

날짜 계산을 할 때 시간은 필요 없으니, 필요한 년-월-일만 받아와 쓸 수 있도록 날짜 포맷을 설정해준다. 

기준 날짜로부터 오늘이 몇일 째인지 구해보는 D+day 계산을 위해, 새로운 days() 함수를 만들어준다. 

days()는 기준 날짜를 인수로 받아 날짜 계산 후 Int 숫자를 반환하는 메서드로, 기준 날짜부터 1일로 두기 위해서는 + 1 을 해주어야 한다.

새로 만들어준 날짜 포맷에 맞게 기준 날짜를 정해주고, days()의 인수로 넣어주면 D+day 날짜 계산이 된다. 

 

기준 일로부터 100일 째 같은 기념일 계산을 하기 위해서는 calender components의 'day' 형식을 받아와 기준 날짜에 숫자를 더해주면 된다. 

 

 

 

 

728x90
반응형