2016-10-29 4 views
1

Ich habe zwei Zeitintervalle im Grunde ich möchte konvertieren Unterschied zwischen ihnen herauszufinden, das ist mein Code. aber, funktioniert es nichtUnterschied zwischen zwei Zeitintervall ios Komponenten swift 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

wenn Komponenten nennt es nil – ItsMeMihir

+0

kehrt wo 'timeElapsed' und 'timeNow' Parameter kommen aus? – dirtydanee

+0

@dirtydanee Ich aktualisiere es siehe – ItsMeMihir

Antwort

3

Es besteht keine Notwendigkeit für die ganze Umwandlung Sie am Anfang der Funktion zu tun. Date(timeIntervalSince1970:) akzeptiert NSTimeInterval, jedoch ist es nur ein typealias für double.

Auch, weil Ihre erste if Anweisungsprüfung für seconds müssen Sie .seconds in die Komponentenparameterliste einschließen.

Ihr folgendes tun könnte:

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

es ist Danke zu lösen – ItsMeMihir

0

Nur ein Tipp, es ist ein Fehler in der Logik, die die Funktion return „Gerade jetzt“ in jedem Fall macht. So, hier ist der modifizierte Code:

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 
    }