Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active May 3, 2016 04:11
Show Gist options
  • Save KentarouKanno/e19334ecae41072faa28 to your computer and use it in GitHub Desktop.
Save KentarouKanno/e19334ecae41072faa28 to your computer and use it in GitHub Desktop.
NSDate

NSDate

NSDate Class Reference

★ 現在時刻を取得する

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)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment