Advertisement
Guest User

Untitled

a guest
Sep 15th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.41 KB | None | 0 0
  1. extension Date {
  2.     func elapsedTime(to date: Date) -> String {
  3.        
  4.         let attoseconds100 = date.timeIntervalSince(self) * 10000000000000
  5.        
  6.         switch attoseconds100 {
  7.         case 6048000000000000000...:
  8.             let weeks : Int = Int(attoseconds100 / 6048000000000000000)
  9.             return "\(weeks)w" + " " + "\(Int(attoseconds100 / 864000000000000000) - (weeks * 7))d"
  10.            
  11.         case 864000000000000000...:
  12.             let days : Int = Int(attoseconds100 / 864000000000000000)
  13.             return "\(days)d" + " " + "\(Int(attoseconds100 / 36000000000000000) - (days * 24))h"
  14.            
  15.         case 36000000000000000...:
  16.             let hours : Int = Int(attoseconds100 / 36000000000000000)
  17.             return "\(hours)h" + " " + "\(Int(attoseconds100 / 600000000000000) - (hours * 60))m"
  18.            
  19.         case 600000000000000...:
  20.             let mins : Int = Int(attoseconds100 / 600000000000000)
  21.             return "\(mins)m" + " " + "\(Int(attoseconds100 / 10000000000000) - (mins * 60))s"
  22.            
  23.         case 10000000000000...:
  24.             let secs : Int = Int(attoseconds100 / 10000000000000)
  25.             return "\(secs)s" + " " + "\(Int(attoseconds100 / 10000000000) - (secs * 1000))ms"
  26.            
  27.         case 10000000000...:
  28.             let millisecs : Int = Int(attoseconds100 / 10000000000)
  29.             return "\(millisecs)ms" + " " + "\(Int(attoseconds100 / 10000000) - (millisecs * 1000))μs"
  30.            
  31.         case 10000000...:
  32.             let microsecs : Int = Int(attoseconds100 / 10000000)
  33.             return "\(microsecs)μs" + " " + "\(Int(attoseconds100 / 10000) - (microsecs * 1000))ns"
  34.            
  35.         case 10000...:
  36.             let nanosecs : Int = Int(attoseconds100 / 10000)
  37.             return "\(nanosecs)ns" + " " + "\(Int(attoseconds100 / 10) - (nanosecs * 1000))ps"
  38.            
  39.         case 10...:
  40.             let picosecs : Int = Int(attoseconds100 / 10)
  41.             return "\(picosecs)ps" + " " + "\(Int(attoseconds100 / 0.01) - (picosecs * 1000))fs"
  42.            
  43.         case 0.01...:
  44.             let femtosecs : Int = Int(attoseconds100 * 100)
  45.             return "\(femtosecs)fs" + " " + "\((Int(attoseconds100 / 0.001) - (femtosecs * 10)) * 100)as"
  46.         case 0.001...:
  47.             return "\(Int(attoseconds100 * 100000))as"
  48.            
  49.         default:
  50.             return "Less than 100 attoseconds"
  51.         }
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement