Advertisement
Guest User

Date Extension

a guest
Apr 29th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.47 KB | None | 0 0
  1. extension Date {
  2.     func years(from date: Date) -> Int {
  3.         return Calendar.current.dateComponents([.year], from: date, to: self).year ?? 0
  4.     }
  5.    
  6.     func months(from date: Date) -> Int {
  7.         return Calendar.current.dateComponents([.month], from: date, to: self).month ?? 0
  8.     }
  9.    
  10.     func weeks(from date: Date) -> Int {
  11.         return Calendar.current.dateComponents([.weekOfYear], from: date, to: self).weekOfYear ?? 0
  12.     }
  13.    
  14.     func days(from date: Date) -> Int {
  15.         return Calendar.current.dateComponents([.day], from: date, to: self).day ?? 0
  16.     }
  17.    
  18.     func hours(from date: Date) -> Int {
  19.         return Calendar.current.dateComponents([.hour], from: date, to: self).hour ?? 0
  20.     }
  21.    
  22.     func minutes(from date: Date) -> Int {
  23.         return Calendar.current.dateComponents([.minute], from: date, to: self).minute ?? 0
  24.     }
  25.    
  26.     func seconds(from date: Date) -> Int {
  27.         return Calendar.current.dateComponents([.second], from: date, to: self).second ?? 0
  28.     }
  29.    
  30.     var relativeTime: String {
  31.         let now = Date()
  32.        
  33.         if now.years(from: self)   > 0 {
  34.             return now.years(from: self).description  + " year"  + { return now.years(from: self)   > 1 ? "s" : "" }() + " ago"
  35.         }
  36.        
  37.         if now.months(from: self)  > 0 {
  38.             return now.months(from: self).description + " month" + { return now.months(from: self)  > 1 ? "s" : "" }() + " ago"
  39.         }
  40.        
  41.         if now.weeks(from:self)   > 0 {
  42.             return now.weeks(from: self).description  + " week"  + { return now.weeks(from: self)   > 1 ? "s" : "" }() + " ago"
  43.         }
  44.        
  45.         if now.days(from: self)    > 0 {
  46.             if now.days(from:self) == 1 { return "Yesterday" }
  47.             return now.days(from: self).description + " days ago"
  48.         }
  49.        
  50.         if now.hours(from: self)   > 0 {
  51.             return "\(now.hours(from: self)) hour"     + { return now.hours(from: self)   > 1 ? "s" : "" }() + " ago"
  52.         }
  53.        
  54.         if now.minutes(from: self) > 0 {
  55.             return "\(now.minutes(from: self)) minute" + { return now.minutes(from: self) > 1 ? "s" : "" }() + " ago"
  56.         }
  57.        
  58.         if now.seconds(from: self) > 0 {
  59.             if now.seconds(from: self) < 15 { return "Just now"  }
  60.             return "\(now.seconds(from: self)) second" + { return now.seconds(from: self) > 1 ? "s" : "" }() + " ago"
  61.         }
  62.        
  63.         return ""
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement