しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

SwiftでNSDateが特定期間内かを判定する方法

NSDateが期間内かを調べる方法です。
SwiftDateをimportしていますが、これはdate2015_10_01 + 2.dayというように目的のNSDateを作るために使いました。

import SwiftDate

let date2015_10_01 = NSDate().beginningOfMonth
let date2015_10_03 = date2015_10_01 + 2.day
let date2015_10_02 = date2015_10_01 + 1.day
(date2015_10_01...date2015_10_03).contains(date2015_10_02) // → true
(date2015_10_01...date2015_10_02).contains(date2015_10_03) // → false
(date2015_10_01...date2015_10_02).contains(date2015_10_02) // → true

containsメソッドは下のように定義されていたので、NSDateでなくともComparableプロトコルを持っていれば同様の事ができそうです。

public struct ClosedInterval<Bound : Comparable> : IntervalType, Equatable, CustomStringConvertible, CustomDebugStringConvertible, _Reflectable {
    public func contains(x: Bound) -> Bool
}