2017-05-20 56 views
3

在一個單元格中,我想在解析服務器的NSDate中顯示時間。這是代碼,但它不工作。沒有什麼改變,數據也沒有被分析。Swift time ago from Parse createdAt date

if let createdat = (object?["createdAt"] as? String){ 
      let pastDate = Date(timeIntervalSinceNow: TimeInterval(createdat)!) 
      cell.TimeAgo.text = pastDate.timeAgoDisplay() 
     } 


     extension Date { 
      func timeAgoDisplay() -> String { 
     let secondsAgo = Int(Date().timeIntervalSince(self)) 

     let minute = 60 
     let hour = 60 * minute 
     let day = 24 * hour 
     let week = 7 * day 

     if secondsAgo < minute { 
      return "\(secondsAgo) sec ago" 
     } else if secondsAgo < hour { 
      return "\(secondsAgo/minute) min ago" 
     } else if secondsAgo < day { 
      return "\(secondsAgo/hour) hrs ago" 
     } else if secondsAgo < week { 
      return "\(secondsAgo/day) days ago" 
     } 

     return "\(secondsAgo/week) weeks ago" 
    } 
} 
+0

的可能的複製[在(月/日/小時/分鐘/秒)兩個NSDates之間的差異](http://stackoverflow.com/questions/27182023/getting-the-difference-between-two-nsdates-in-months-days-小時分鐘秒) – luke

回答

5

如果你只是想要一個很久以前延長時間去回答的底部

我會告訴你一個例子只是爲了獲得秒前和後,我會告訴您的擴展已更新。

注意:如果你願意,你可以直接使用從磷酸酶日期:

if let pastDate = (object?["createdAt"] as? Date){ 
     cell.TimeAgo.text = pastDate.timeAgoDisplay() 
    } 

例如何獲得秒前與斯威夫特3

第一:要獲得多少秒前我們需要檢查,如果我們有一分鐘或更少,得到當前日期減去前一分鐘你可以寫:

let minuteAgo = calendar.date(byAdding: .minute, value: -1, to: Date())! 

二:現在比較兩個日期! (如果你的擴展名是我們自己替換你的日期),並獲得這兩個日期之間的差異。

if (minuteAgo < yourDate) { 
    let diff = Calendar.current.dateComponents([.second], from: yourDate, to: Date()).second ?? 0 
    print("\(diff) sec ago") 
} 

就是這樣,現在你可以打印時間了!

所以您的分機是這樣的: (這是一個簡單的擴展,以獲得時間前)

extension Date { 
    func timeAgoDisplay() -> String { 

     let calendar = Calendar.current 
     let minuteAgo = calendar.date(byAdding: .minute, value: -1, to: Date())! 
     let hourAgo = calendar.date(byAdding: .hour, value: -1, to: Date())! 
     let dayAgo = calendar.date(byAdding: .day, value: -1, to: Date())! 
     let weekAgo = calendar.date(byAdding: .day, value: -7, to: Date())! 

     if minuteAgo < self { 
      let diff = Calendar.current.dateComponents([.second], from: self, to: Date()).second ?? 0 
      return "\(diff) sec ago" 
     } else if hourAgo < self { 
      let diff = Calendar.current.dateComponents([.minute], from: self, to: Date()).minute ?? 0 
      return "\(diff) min ago" 
     } else if dayAgo < self { 
      let diff = Calendar.current.dateComponents([.hour], from: self, to: Date()).hour ?? 0 
      return "\(diff) hrs ago" 
     } else if weekAgo < self { 
      let diff = Calendar.current.dateComponents([.day], from: self, to: Date()).day ?? 0 
      return "\(diff) days ago" 
     } 
     let diff = Calendar.current.dateComponents([.weekOfYear], from: self, to: Date()).weekOfYear ?? 0 
     return "\(diff) weeks ago" 
    } 
} 

要使用它,這是非常簡單的:

var now = Date() 
now.timeAgoDisplay() 
+0

我的回答正在進行中... –

+0

爲什麼我應該不解開我的代碼。我之前已經展開過力量,如果讓 – john

+0

完美!我的答案解決你的問題? –