★ 現在時刻を取得する
let now = NSDate()
print(now)
//=> "2015-12-26 23:19:11 +0000\n"
★ フォーマットを指定してNSDateを文字列に変換する
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "ja_JP")
dateFormatter.dateFormat = "yyyy/MM/dd HH:mm:ss"
print(dateFormatter.stringFromDate(NSDate()))
//=> "2015/12/27 08:20:31\n"
★ 現在時刻から計算したNSDateを取得
var date:NSDate = NSDate();
// 1分後
date = NSDate(timeIntervalSinceNow:60)
// 1時間
date = NSDate(timeIntervalSinceNow:60*60)
// 1日後
date = NSDate(timeIntervalSinceNow:24*60*60)
// 一週間後
date = NSDate(timeIntervalSinceNow:7*24*60*60)
// 一週間前
date = NSDate(timeIntervalSinceNow:-7*24*60*60)
★ String → NSDate
let dateString: String = "2015-11-27T15:25:19+09:00"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-mm-dd'T'HH:mm:ssZ"
let dateFromString: NSDate = dateFormatter.dateFromString(dateString)!
print(dateFromString)
// 2015-01-27 06:25:19 +0000
★ NSDateFormatter Extension (String → NSDate)
extension NSDateFormatter {
func convertNSDateFromString(formatter: String, dateString: String) -> NSDate {
self.dateFormat = formatter
return self.dateFromString(dateString)!
}
}
// Usage
let dateFormatter = NSDateFormatter()
var date: NSDate = dateFormatter.convertNSDateFromString("yyyy-mm-dd'T'HH:mm:ssZ", dateString: "2015-11-28T11:36:22+09:00")
★ NSDateFormatter Class Extension (String → NSDate)
extension NSDateFormatter {
class func convertNSDateFromString(formatter formatter: String, dateString: String) -> NSDate {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = formatter
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
return dateFormatter.dateFromString(dateString)!
}
}
// Usage
var date: NSDate = NSDateFormatter.convertNSDateFromString(formatter: "yyyy-mm-dd'T'HH:mm:ssZ", dateString: "2015-11-28T11:36:22+09:00")
★ String Extension (String → NSDate)
extension String {
func convertNSDateFromString(formatter: String) -> NSDate {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = formatter
return dateFormatter.dateFromString(self)!
}
}
// Usage
var date: NSDate = "2015-11-28T11:36:22+09:00".convertNSDateFromString("yyyy-mm-dd'T'HH:mm:ssZ")
★ NSDate Compare
func == (d1:NSDate, d2:NSDate) -> Bool {
return d1.compare(d2) == .OrderedSame
}
func > (d1:NSDate, d2:NSDate) -> Bool {
return d1.compare(d2) == .OrderedDescending
}
func < (d1:NSDate, d2:NSDate) -> Bool {
return d1.compare(d2) == .OrderedAscending
}
func <= (d1:NSDate, d2:NSDate) -> Bool {
return d1 < d2 || d1 == d2
}
func >= (d1:NSDate, d2:NSDate) -> Bool {
return d1 > d2 || d1 == d2
}
// Usage
let now = NSDate()
let tomorrow = NSDate(timeIntervalSinceNow: 60 * 60 * 24)
let yesterday = NSDate(timeIntervalSinceNow: -60 * 60 * 24)
if now < tomorrow {
print(true)
}
if yesterday <= now {
print(true)
}