반응형

비교

    func isExpired(expiredDate:Int)->Bool{
        var isep : Bool = false
        
        let currentTime : String = Date.string(fmt: .standard)
        let prevTime : String = "2020-01-14 11:11:11"
        
        if (!currentTime.isEmpty && !prevTime.isEmpty){
            let ct:Date = Date.stringToDate(currentTime)
            let pt:Date = Date.stringToDate(prevTime)
            let tis = Int(ct.timeIntervalSince(pt)/(60*60*24))
            if tis >= expiredDate {
                isep = true
            }
        }
        return isep
    }

 

- Date.string 부분과 Date.stringToDate는 expentension으로 빼놨다.

- timeIntervalSince로 두 날짜의 차이를 구한뒤 60*60*24(하루) 으로 나눠준다 , 둘차이가 하루가안되면 0일것이다.

 

유틸펑션

extension Date {
    enum DateFormat {
      case standard
    }
	//지정된 포맷으로 현재 날짜 string으로 반환
    static func string(fmt: DateFormat) -> String {
      let formatter = DateFormatter()
      switch fmt {
      case .standard:
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return formatter.string(from: Date())
      default:
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return formatter.string(from: Date())
      }
    }
    
    //string date를 timezon UTC 방식으로 변환
    static func stringToDate(_ stringDate: String) -> (Date) {
        let formatter = DateFormatter()
        formatter.dateFormat =  "yyyy-MM-dd HH:mm:ss"
        formatter.timeZone = NSTimeZone(name: "UTC") as TimeZone?
        return formatter.date(from: stringDate)!
    }
    
}

-필요에 따라 포맷형식이나 타임존 방식을 변경해서 사용하면된다.

사용

if isExpired(30) {
	//지난 날짜.
}
else {
	//아직 안지남
}
반응형

+ Recent posts