LoginSignup
12
10

More than 5 years have passed since last update.

Swiftで日付の操作

Last updated at Posted at 2015-08-23

SwiftでCommonクラスに入れて使いまわしている日付取得用のメソッドです。

前はObjective−Cで書いていたのですが、Swiftに書き換えてみようと思い、土日数時間使ってちょこちょことやってます。
マンガ新刊情報〜圏外OK!買い忘れ防止アラートあり!〜

月を渡して表示させたい画像を選択

月の値を渡して画像を切り替えたいというときに使っています。
スクリーンショット 2015-08-23 21.38.03.png

共通のメソッドは以下のようになってます。

Common.swift
    /** 月から表示させる画像ファイル名を取得 */
    func getMonthImage(strMonth:String)->String{
        return commonConst.common.imageList[strMonth.toInt()!-1]
    }

画像のファイル名を月順に配列にもたせて、そこから取得する流れです。

commonConst.swift
class commonConst {
    struct common {
        static let imageList :[String] = [
            "Jan.png",
            "Feb.png",
            "Mar.png",
            "Apr.png",
            "May.png",
            "Jun.png",
            "Jul.png",
            "Aug.png",
            "Sep.png",
            "Oct.png",
            "Nov.png",
            "Dec.png"
        ]
    }
}

時差を取得

私が作ってる漫画の新刊情報取得アプリはローカルストレージに発売スケジュールを持ってます。
マンガの新刊情報ってそんな更新頻度ないんで1日1回だけ最新がないかチェックをかけてるわけです。
そういうわけで現在日時と前回更新日時の差分をとるためのメソッドです。

Common.swift
    /** 時間の差分を取得 */
    func diffDate(baseDate:NSDate,checkDate:NSDate) -> NSInteger{
        var sinceInt = NSInteger(checkDate.timeIntervalSinceDate(baseDate))
        return sinceInt/60
    }

今日って第何週?

発売情報を週ごとに表示させる際、今日が第◯週だったらその週を最初から表示させてまう!
じゃ、今日は第何週目ですかー?というときのメソッドです。
スクリーンショット 2015-08-23 21.45.28.png
(ULTRAMANかっこいい。。)

Common.swift
    /** 今日が第何週か取得 */
    func getTodayWeekOfMonth() -> Int {
        let calendar = NSCalendar.currentCalendar()
        var comp : NSDateComponents = calendar.components(
            NSCalendarUnit.CalendarUnitWeekOfMonth, fromDate: NSDate())
        return comp.weekOfMonth
    }

日付フォーマット毎回書くの面倒

フォーマットさせたいNSDate型の日時と、取得したい日時フォーマット形式を渡すとStringで返してくれるメソッドです。

Common.swift
    /** 日付のフォーマット */
    func dateFormatter(date : NSDate, style : String) -> String {
        let dateFormatter = NSDateFormatter()
        dateFormatter.locale = NSLocale(localeIdentifier: "ja_JP")
        dateFormatter.dateFormat = style
        return  dateFormatter.stringFromDate(date)
    }

使うときはこんな感じ。

Common.swift
    /** 今日の月を取得 */
    func getThisMonth()->String{
        var now = dateFormatter(NSDate(), style: "M")
        return now
    }

以上ですー。
こうした方がかっこいいよ!というのがあればコメントよろしくですー。

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10