読者です 読者をやめる 読者になる 読者になる

しめ鯖日記

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

SwiftのNSDate拡張ライブラリ、SwiftDateを使ってみる

Swift

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を多用するアプリを作る際はぜひ作ってみようと思います。