NSDate-Escort(Objective-CのNSDate型拡張ライブラリ)をSwiftのDate型拡張ライブラリとして書き直しました。
Swift3に移行する際に一時的な処置として使ってみてください。
※一応Swiftの日付操作ライブラリとしても使えますがメソッド名とかは変えたほうが良さげですね。
github: https://github.com/azu/NSDate-Escort
import Foundation
extension Date {
fileprivate var calendar: Calendar! {
return Calendar.current
}
var seconds: Int {
return self.calendar.component(.second, from: self)
}
var minute: Int {
return self.calendar.component(.minute, from: self)
}
var hour: Int {
return self.calendar.component(.hour, from: self)
}
var day: Int {
return self.calendar.component(.day, from: self)
}
var month: Int {
return self.calendar.component(.month, from: self)
}
var week: Int {
return self.calendar.component(.weekOfMonth, from: self)
}
var weekday: Int {
return self.calendar.component(.weekday, from: self)
}
var year: Int {
return self.calendar.component(.year, from: self)
}
}
extension Date {
func isToday() -> Bool {
return self.calendar.isDateInToday(self)
}
func isEqualToDate(_ date: Date) -> Bool {
return self == date
}
func isEarlierThanDate(_ date: Date) -> Bool {
return self < date
}
func isLaterThanDate(_ date: Date) -> Bool {
return self > date
}
func isEarlierThanOrEqualDate(_ date: Date) -> Bool {
return self < date || self == date
}
func isLaterThanOrEqualDate(_ date: Date) -> Bool {
return self > date || self == date
}
}
extension Date {
func dateAtStartOfDay() -> Date {
return self.calendar.startOfDay(for: self)
}
func dateAtEndOfDay() -> Date {
var components = DateComponents()
components.day = 1
components.second = -1
return self.calendar.date(byAdding: components, to: self.dateAtStartOfDay())!
}
func dateByAddingDays(_ day: Int) -> Date {
return self.calendar.date(byAdding: .day, value: day, to: self)!
}
func dateByAddingHours(_ hour: Int) -> Date {
return self.calendar.date(byAdding: .hour, value: hour, to: self)!
}
func dateByAddingMinutes(_ minute: Int) -> Date {
return self.calendar.date(byAdding: .minute, value: minute, to: self)!
}
func addingMinutes(_ minute: Int) -> Date {
return self.dateByAddingMinutes(minute)
}
}
参考
http://stackoverflow.com/questions/13324633/nsdate-beginning-of-day-and-end-of-day
https://developer.apple.com/reference/foundation/calendar
http://qiita.com/kouchi67/items/39341d5e78778b532536
http://qiita.com/mishimay/items/8d67b583dc6809b2baf5