Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension NSDate {
- func yearsFrom(date:NSDate) -> Int{
- return NSCalendar.currentCalendar().components(.Year, fromDate: self, toDate: date, options: []).year
- }
- func monthsFrom(date:NSDate) -> Int{
- return NSCalendar.currentCalendar().components(.Month, fromDate: self, toDate: date, options: []).month
- }
- func weeksFrom(date:NSDate) -> Int{
- return NSCalendar.currentCalendar().components(.WeekOfYear, fromDate: self, toDate: date, options: []).weekOfYear
- }
- func daysFrom(date:NSDate) -> Int{
- return NSCalendar.currentCalendar().components(.Day, fromDate: self, toDate: date, options: []).day
- }
- func hoursFrom(date:NSDate) -> Int{
- return NSCalendar.currentCalendar().components(.Hour, fromDate: self, toDate: date, options: []).hour
- }
- func minutesFrom(date:NSDate) -> Int{
- return NSCalendar.currentCalendar().components(.Minute, fromDate: self, toDate: date, options: []).minute
- }
- func secondsFrom(date:NSDate) -> Int{
- return NSCalendar.currentCalendar().components(.Second, fromDate: self, toDate: date, options: []).second
- }
- func offset(fromDate date:NSDate = NSDate()) -> (offset:Int,period:TimePeriod) {
- if yearsFrom(date) > 1 { return (yearsFrom(date), .Years) }
- if yearsFrom(date) > 0 { return (yearsFrom(date), .Year) }
- if monthsFrom(date) > 1 { return (monthsFrom(date), .Months) }
- if monthsFrom(date) > 0 { return (monthsFrom(date), .Month) }
- if weeksFrom(date) > 1 { return (weeksFrom(date), .Weeks) }
- if weeksFrom(date) > 0 { return (weeksFrom(date), .Week) }
- if daysFrom(date) > 1 { return (daysFrom(date), .Days) }
- if daysFrom(date) > 0 { return (daysFrom(date), .Day) }
- if hoursFrom(date) > 1 { return (hoursFrom(date), .Hours) }
- if hoursFrom(date) > 0 { return (hoursFrom(date), .Hour) }
- if minutesFrom(date) > 1 { return (minutesFrom(date), .Minutes) }
- if minutesFrom(date) > 0 { return (minutesFrom(date), .Minute) }
- if secondsFrom(date) > 1 { return (secondsFrom(date), .Seconds) }
- if secondsFrom(date) > 0 { return (secondsFrom(date), .Seconds) }
- return (0,.Now)
- }
- func formatTimeOffset(fromDate date:NSDate = NSDate(), withFormatting formatting:((offset:Int,period:TimePeriod) -> String)) -> String {
- let currentOffset = offset(fromDate: date)
- return formatting(offset: currentOffset.offset, period: currentOffset.period)
- }
- }
- enum TimePeriod {
- case Now
- case Second
- case Seconds
- case Minute
- case Minutes
- case Hour
- case Hours
- case Day
- case Days
- case Week
- case Weeks
- case Month
- case Months
- case Year
- case Years
- }
- date.formatTimeOffset { (offset, period) -> String in
- switch period {
- case .Now : return "Now"
- case .Second : return "\(offset)" + "s"
- case .Seconds : return "\(offset)" + "s"
- case .Minute : return "\(offset)" + "m"
- case .Minutes : return "\(offset)" + "m"
- case .Hour : return "\(offset)" + "h"
- case .Hours : return "\(offset)" + "h"
- case .Day : return "\(offset)" + "d"
- case .Days : return "\(offset)" + "d"
- case .Week : return "\(offset)" + "w"
- case .Weeks : return "\(offset)" + "w"
- case .Month : return "\(offset)" + "m"
- case .Months : return "\(offset)" + "m"
- case .Year : return "\(offset)" + "y"
- case .Years : return "\(offset)" + "y"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement