NSDateを便利にしてくれるライブラリ、SwiftDate
を試してみました。
インストール
インストールは通常通りCocoaPodsを使います。
Swiftのライブラリなのでuse_frameworks!
が必要です、あと本日(2015年9月21日)時点ではSwift2.0されてなかったのでswift-2.0ブランチから直接取得する必要があります。
platform :ios, '8.0' use_frameworks! pod 'SwiftDate', git: 'https://github.com/malcommac/SwiftDate.git', branch: 'swift-2.0'
できること
情報の取得
年・月・日・時間・分・秒などが取れるようになれます。
import SwiftDate NSDate().year NSDate().month NSDate().day NSDate().hour NSDate().minute NSDate().second
曜日や月・曜日の名前も取得できます。
import SwiftDate print(NSDate().monthName) // → 9月 print(NSDate().weekdayName) // → 月曜日 print(NSDate().weekday)
他には週の先頭と週末の日付も取ってくれます。
これは地味に嬉しいですね。
import SwiftDate print(NSDate().firstDayOfWeek) // 今週日曜日のday print(NSDate().lastDayOfWeek) // 今週土曜日のday
NSDateの生成
今日・昨日・明日を取得するメソッドもあります。
0時0分のNSDateを返してくれるのが便利です。
import SwiftDate print(NSDate.today()) print(NSDate.yesterday()) print(NSDate.tomorrow())
他にも、year/monthなどを指定してNSDateを取得・文字列からNSDateを取得など様々な取得方法が用意されています。
NSDateの移動
SwiftDateではIntの拡張や演算子の追加をしているので下のような書き方で1日後のNSDateや3時間前のNSDateを取得できます。
import SwiftDate print(NSDate() + 1.day) print(NSDate() - 3.hours)
年や月を直接セットしたい場合はsetメソッドを使います。
似たメソッドでaddメソッドもあります。
import SwiftDate print(NSDate().set(year: nil, month: nil, day: 10, hour: nil, minute: nil, second: nil, tz: nil)) print(NSDate().add(year: nil, month: nil, day: 10, hour: nil, minute: nil, second: nil, tz: nil))
判定メソッド
SwiftDateでは「今日かどうか」「今週かどうか」「週末かどうか」「同じ日かどうか」など便利な判定メソッドが揃っています。
import SwiftDate print(NSDate().isToday()) print(NSDate().isWeekend()) print(NSDate().isThisWeek()) print(NSDate().isEqualToDate(NSDate(), ignoreTime: true))
まとめ
全て紹介しきれなかったのですが、SwiftDateはNSDate周りのほしいメソッドを網羅してくれていて非常に便利なライブラリです。
NSDateを多用するアプリを作る際はぜひ作ってみようと思います。