TimeLord
Is simple structure encapsulating NSDate, NSCalendar, NSDateComponents, NSDateFormatter and provide new data type making operation with dates easy.
Features
- Create date in any format and timezone
- Get date in any format and timezone
- Get date components (like year, month, second, etc)
- Many features for compare date
- Modyfy date, add or sub any date component
- Get diference between date
Requirements
- iOS 8.0+ / Mac OS X 10.9+ / tvOS 9.0+ / watchOS 2.0+
- Xcode 7.2+
Communication
- If you need help, use Stack Overflow. (Tag 'JFTimeLord')
- If you'd like to ask a general question, use Stack Overflow.
- If you found a bug, open an issue.
- If you have a feature request, open an issue.
- If you want to contribute, submit a pull request.
Installation
Carthage
Add it in your Cartfile:
github "JonFir/TimeLord"
Run carthage update
to build the framework and drag the built TimeLord.framework into your Xcode project.
Manually
Just copy TimeLord.swift into your project
Usage
import TimeLord
let firstDate = TimeLord(year: 2016, month: 01, day: 01, hour: 02, minute: 30, second: 00)
let secondDate = TimeLord(year: 2015, month: 01, day: 01, hour: 02, minute: 30, second: 00)
let nowDate = TimeLord(keyWord: .Now)
if nowDate > firstDate {
...
}
let newDate = secondDate.toString()
let newDate = firstDate.toStringInFormat("yyyy-MM-dd HH:mm:ss", inTimeZone: NSTimeZone(abbreviation: "MSK"))
let newDate = secondDate.addYears(11).addMonths(9).subDays(1)
Create date
// form NSDate
let date = TimeLord(date: NSDate())
// form date components
let date = TimeLord(year: 2016, month: 01, day: 08, hour: 14, minute: 25, second: 00)
let date = TimeLord(year: 2016, month: 01, day: 08, hour: 10, minute: 25, second: 00, timeZone: NSTimeZone(abbreviation: "MSK"))
// form string
let date = TimeLord(date: "2016-01-08 13:38:00")
let date = TimeLord(date: "2016-01-08 13:38:00", inFormat: "yyyy-MM-dd HH:mm:ss")
let date = TimeLord(date: "2016-01-08 09:38:00", inFormat: "yyyy-MM-dd HH:mm:ss", timeZone: NSTimeZone(abbreviation: "MSK"))
// from time interval
let date = TimeLord(timeIntervalSince1970: 1452243489)
let date = TimeLord(timeIntervalSinceNow: 1452243489)
let date = TimeLord(timeInterval: 1452243489, sinceDate: date)
let date = TimeLord(timeIntervalSinceReferenceDate: 1452243489)
// from key word
let date = TimeLord(keyWord: .Now)
let date = TimeLord(keyWord: .Today)
let date = TimeLord(keyWord: .Tomorrow)
let date = TimeLord(keyWord: .Yesterday)
Get date components
let tmDateInDefaultFormat = TimeLord(date: "2016-01-08 13:38:00")
let year = tmDateInDefaultFormat?.year
let month = tmDateInDefaultFormat?.month
let day = tmDateInDefaultFormat?.day
let hour = tmDateInDefaultFormat?.hour
let minute = tmDateInDefaultFormat?.minute
let second = tmDateInDefaultFormat?.second
let nanosecond = tmDateInDefaultFormat?.nanosecond
let dayInMonth = tmDateInDefaultFormat?.dayInMonth
let weekday = tmDateInDefaultFormat?.weekday
let weekdaySymbol = tmDateInDefaultFormat?.weekdaySymbol
let weekdayOrdinal = tmDateInDefaultFormat?.weekdayOrdinal
let quarter = tmDateInDefaultFormat?.quarter
let weekOfMonth = tmDateInDefaultFormat?.weekOfMonth
let weekOfYear = tmDateInDefaultFormat?.weekOfYear
let yearForWeekOfYear = tmDateInDefaultFormat?.yearForWeekOfYear
let era = tmDateInDefaultFormat?.era
Get date as string
let date = TimeLord(year: 2016, month: 01, day: 08, hour: 23, minute: 00, second: 00)
date.toString() // "2016-01-08 23:00:00"
date.toStringInFormat("yyyy-MM-dd HH:mm:ss") // "2016-01-08 23:00:00"
date.toStringInFormat("yyyy-MM-dd HH:mm:ss", inTimeZone: NSTimeZone(abbreviation: "MSK")) //"2016-01-08 19:00:00"
date.toFormattedDateString() // "янв. 8, 2016"
date.toTimeString() // "23:25:40"
date.toDateTimeString() // "2016-01-08 23:25:40"
date.toDayDateTimeString() // "пт, янв. 8, 2016 11:25 PM"
date.toAtomString() // "2016-01-08T23:25:40+07:00"
date.toCookieString() // "пятница, 08-янв.-2016 23:25:40 GMT+7"
date.toIso8601String() // "2016-01-08T23:25:40+0700"
date.toRfc822String() // "пт, 08 янв. 16 23:25:40 +0700"
date.toRfc850String() // "пятница, 08-янв.-16 23:25:40 GMT+7"
date.toRfc1036String() // "пт, 08 янв. 16 23:25:40 +0700"
date.toRfc1123String() // "пт, 08 янв. 2016 23:25:40 +0700"
date.toRfc2822String() // "пт, 08 янв. 2016 23:25:40 +0700"
date.toRfc3339String() // "2016-01-08T23:25:40+07:00"
date.toW3cString() // "2016-01-08T23:25:40+07:00"
date.toRssString() // "пт, 08 янв. 2016 23:25:40 +0700"
Compare dates
let date1 = TimeLord(year: 2016, month: 01, day: 01, hour: 02, minute: 30, second: 00)
let date2 = TimeLord(year: 2016, month: 01, day: 01, hour: 02, minute: 30, second: 00)
let date3 = TimeLord(year: 2016, month: 01, day: 02, hour: 18, minute: 30, second: 45)
let date4 = TimeLord(year: 2016, month: 01, day: 02, hour: 22, minute: 35, second: 45)
if date1 == date2 {...}
if date1 != date3 {...}
if date1 < date3 {...}
if date3 <= date4 {...}
if date1 <= date2 {...}
if date4 > date3 {...}
if date3 >= date2 {...}
if date1 >= date2 {...}
if date3.between(date1, second: date4) {...}
let date = date1.closest(date3, second: date4) // return date3
let date = date1.farthest(date3, second: date4) // return date4
let date = date1.earlier(date3) // return date1
let date = date1.later(date3) // return date3
if date.isWeekend() {...}
if date.isYesterday() {...}
if date.isToday() {...}
if date.isTomorrow() {...}
if date.isFuture() {...}
if date.isPast() {...}
if date.isLeapYear() {...}
if date.isSameDay(tm2) {...}
if date.isSunday() {...}
if date.isMonday() {...}
if date.isTuesday() {...}
if date.isWednesday() {...}
if date.isThursday() {...}
if date.isFriday() {...}
if date.isSaturday() {...}
Modify date
let newDate = date.addYears(1)
let newDate = date.subYears(1)
let newDate = date.addMonths(9)
let newDate = date.subMonths(1)
let newDate = date.addDays(11)
let newDate = date.subDays(11)
let newDate = date.addHours(1)
let newDate = date.subHours(1)
let newDate = date.addMinutes(15)
let newDate = date.subMinutes(15)
let newDate = date.addSeconds(1)
let newDate = date.subSeconds(15)
let newDate = date.addYears(1).addMonths(9).addSeconds(1)
let newDate = date.next() //nextDay
let newDate = date.previous() //prevDay
let newDate = date.inTimeZone(NSTimeZone(abbreviation: "MSK")!)
let newDate = date.startOfDay()
let newDate = date.endOfDay()
let newDate = date.startOfMonth()
let newDate = date.endOfMonth()
let newDate = date.startOfYear()
let newDate = date.endOfYear()
let newDate = date.average(anotherDay)
Get difference between date
let newDate = firstDate.diffInYears(secondDate)
let newDate = firstDate.diffInMonths(secondDate)
let newDate = firstDate.diffInWeeks(secondDate)
let newDate = firstDate.diffInDays(secondDate)
let newDate = firstDate.diffInHours(secondDate)
let newDate = firstDate.diffInMinutes(secondDate)
let newDate = firstDate.diffInSeconds(secondDate)
License
The MIT License (MIT)
Copyright (c) 2015 Evgeny Elchev