Created
March 17, 2016 21:48
-
-
Save machl/6771239130ec511c521c to your computer and use it in GitHub Desktop.
No more pain with ugly NSDate code.
This file contains hidden or 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
// | |
// Time.swift | |
// Playground | |
// | |
// Created by Lukas Machalik on 17/03/15. | |
// Copyright © 2015 Beers&Chill LLC. All rights reserved. | |
// | |
// Examples: | |
// let duration = 100.milliseconds | |
// let tomorrow = (Time.now + 24.hours).asDate | |
// let tomorrow2 = NSDate() + 24.hours | |
// let today = Time.now.asDate | |
// let yesterday = 24.hours.ago | |
// | |
// var now = NSDate() | |
// now += 12.hours | |
import Foundation | |
typealias Time = Double | |
extension Time { | |
var years: Time { | |
return self * 365.days | |
} | |
var year: Time { return years } | |
var days: Time { | |
return self * 24.hours | |
} | |
var day: Time { return days } | |
var hours: Time { | |
return self * 60.minutes | |
} | |
var hour: Time { return hours } | |
var minutes: Time { | |
return self * 60.seconds | |
} | |
var minute: Time { return minutes } | |
var seconds: Time { | |
return self | |
} | |
var second: Time { return seconds } | |
var milliseconds: Time { | |
return self * 0.001 | |
} | |
var millisecond: Time { return milliseconds } | |
var ago: NSDate { | |
return NSDate() - self | |
} | |
var asDate: NSDate { | |
return NSDate(withTime: self) | |
} | |
static var minTime: Time { | |
return NSDate.minTime | |
} | |
static var now: Time { | |
return NSDate().asTime | |
} | |
} | |
extension NSDate { | |
var asTime: Time { | |
return Time(timeIntervalSince1970) | |
} | |
class var minTime: Time { | |
return distantPast().asTime | |
} | |
class var maxTime: Time { | |
return distantFuture().asTime | |
} | |
convenience init(withTime time: Time) { | |
self.init(timeIntervalSince1970: time) | |
} | |
} | |
func +(left: NSDate, right: Time) -> NSDate { | |
return left.dateByAddingTimeInterval(NSTimeInterval(right)) | |
} | |
func -(left: NSDate, right: Time) -> NSDate { | |
return left.dateByAddingTimeInterval(NSTimeInterval(-right)) | |
} | |
func += (inout left: NSDate, right: Time) { | |
left = left + right | |
} | |
func -= (inout left: NSDate, right: Time) { | |
left = left - right | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment