2016-10-29 9 views
1

기본적으로 두 시간 간격을 가지고 있습니다. 차이점을 찾아 내고 싶습니다. 이것은 내 코드입니다. 하지만 작동하지 않습니다.두 시간 간격 구성 요소 사이의 차이는 신속합니다. 3

func dateformatter(date:Double) -> String { 

    let timeElapsed:TimeInterval = TimeInterval(Int(date)) 
    let timeNow:TimeInterval = TimeInterval(integerLiteral: Int64(Date().timeIntervalSince1970*1000)) 

    let date2:Date = Date(timeIntervalSince1970: timeElapsed) 
    let date1:Date = Date(timeIntervalSince1970: timeNow) 

    let calender:Calendar = Calendar.current 
    let components:DateComponents = calender.dateComponents([.year, .month, .day, .hour, .minute], from: date1, to: date2) 
    var returnString:String = "" 
    print(components.second) 
    if components.second! < 60 { 
     returnString = "Just Now" 
    }else if components.minute! >= 1{ 
     returnString = String(describing: components.minute) + " min ago" 
    }else if components.hour! >= 1{ 
     returnString = String(describing: components.hour) + " hour ago" 
    }else if components.day! >= 1{ 
     returnString = String(describing: components.day) + " days ago" 
    }else if components.month! >= 1{ 
     returnString = String(describing: components.month)+" month ago" 
    }else if components.year! >= 1 { 
     returnString = String(describing: components.year)+" year ago" 
    } 
    return returnString 
} 
+0

구성 요소는'timeElapsed'와 위치를 – ItsMeMihir

+0

nil을 반환 호출'timeNow' 매개 변수에서 오는 : 그래서 여기 수정 된 코드는? – dirtydanee

+0

@dirtydanee 나는 – ItsMeMihir

답변

3

기능 시작시 수행 할 모든 변환이 필요하지 않습니다. Date(timeIntervalSince1970:)NSTimeInterval을 허용하지만 double의 경우에만 typealias입니다.

첫 번째 if 문이 seconds인지 확인하기 때문에 구성 요소 매개 변수 목록에 .seconds을 포함해야합니다. 귀하는 다음을 수행 할 수

:

func dateformatter(date: Double) -> String { 

    let date1:Date = Date() // Same you did before with timeNow variable 
    let date2: Date = Date(timeIntervalSince1970: date) 

    let calender:Calendar = Calendar.current 
    let components: DateComponents = calender.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date1, to: date2) 
    print(components) 
    var returnString:String = "" 
    print(components.second) 
    if components.second! < 60 { 
     returnString = "Just Now" 
    }else if components.minute! >= 1{ 
     returnString = String(describing: components.minute) + " min ago" 
    }else if components.hour! >= 1{ 
     returnString = String(describing: components.hour) + " hour ago" 
    }else if components.day! >= 1{ 
     returnString = String(describing: components.day) + " days ago" 
    }else if components.month! >= 1{ 
     returnString = String(describing: components.month)+" month ago" 
    }else if components.year! >= 1 { 
     returnString = String(describing: components.year)+" year ago" 
    } 
    return returnString 
} 
+0

감사합니다. – ItsMeMihir

0

그냥 팁은, 모든 경우에 "그냥 지금"함수 반환하게 당신의 논리에 오류가 있습니다.

func timeElapsed(date: Date) -> String { 

     let date1:Date = date 
     let date2: Date = Date() // Same you did before with timeNow variable 

     let calender:Calendar = Calendar.current 
     let components: DateComponents = calender.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date1, to: date2) 
     print(components) 
     var returnString:String = "" 

     print(components.second!) 

     if components.second! < 60 { 
      returnString = "Just Now" 
     } 

     if components.minute! > 1{ 
      returnString = String(describing: components.minute!) + " mins ago" 
     } 
     else if components.minute! == 1 { 

      returnString = "A minute ago" 
     } 

     if components.hour! > 1{ 
      returnString = String(describing: components.hour!) + " hours ago" 
     } 
     else if components.hour == 1 { 

      returnString = "An hour ago" 
     } 

     if components.day! > 1{ 
      returnString = String(describing: components.day!) + " days ago" 
     } 
     else if components.day! == 1 { 

      returnString = "Yesterday" 
     } 

     if components.month! > 1{ 
      returnString = String(describing: components.month!)+" months ago" 
     } 
     else if components.month! == 1 { 

      returnString = "A month ago" 
     } 

     if components.year! > 1 { 
      returnString = String(describing: components.year!)+" years ago" 
     } 
     else if components.year! == 1 { 

      returnString = "A year ago" 
     } 

     return returnString 
    }