Last active
May 27, 2017 17:16
-
-
Save leavez/815830fe44b25b4de41284aecb3ce8a3 to your computer and use it in GitHub Desktop.
Convenient method to write specific timeInterval
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
USAGE: | |
let a:TimeInterval = 10.minute // 600s | |
let b = 1.5.hour // 5400s | |
let now = 0.second.later | |
let t1: Date = 5.minite.later | |
let t2 = 5.minite.ago | |
let t3 = 1.day.ago | |
1et t4 = year.later | |
*/ | |
public protocol Time { | |
var doubleValue: Double {get} | |
} | |
extension Time { | |
public var second: TimeInterval { | |
return self.doubleValue | |
} | |
public var millisecond: TimeInterval { | |
return 0.001 * second | |
} | |
public var minute: TimeInterval { | |
return 60 * second | |
} | |
public var hour: TimeInterval { | |
return 60 * minute | |
} | |
public var day: TimeInterval { | |
return 24 * hour | |
} | |
public var week: TimeInterval { | |
return 7 * day | |
} | |
public var year: TimeInterval { | |
return 365 * day | |
} | |
} | |
extension TimeInterval { | |
public var later: Date { | |
return Date(timeIntervalSinceNow: self) | |
} | |
public var ago: Date { | |
return Date(timeIntervalSinceNow: -self) | |
} | |
} | |
extension Int: Time { | |
public var doubleValue: Double { | |
return Double(self) | |
} | |
} | |
extension Double: Time { | |
public var doubleValue: Double { | |
return Double(self) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment