Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > NSDate

NSDate

日付を管理するクラスです。よく使いますがよく忘れてしまいますのでメモ。初期化の方法や日付の比較のサンプルを掲載します。

NSDateのクラス階層

NSObject

NSDate


参考:Foundation Framework Reference NSDate Class Reference

NSDate例文

初期化処理を解説します

本日のNSDate


//シンプルに宣言するだけで現在時刻のNSDateを作成できます。
var date:NSDate = NSDate();

timeIntervalSinceNow-現在時刻から計算したNSDate


var date:NSDate = NSDate();
date = NSDate(timeIntervalSinceNow: 60);//1分後
date = NSDate(timeIntervalSinceNow: 60*60);//1時間
date = NSDate(timeIntervalSinceNow: 24*60*60);//1日後
date = NSDate(timeIntervalSinceNow: 7*24*60*60);//一週間後
date = NSDate(timeIntervalSinceNow: -7*24*60*60);//一週間前

timeIntervalSinceReferenceDate-参照日付(2001年1月1日(GMT)からのNSDate


var date:NSDate = NSDate();
date = NSDate(timeIntervalSinceReferenceDate: 60);//2001年の1月1日9時(GMT)から1分後。日本の開発環境なので、9時になります。

timeIntervalSince1970-1970年1月1日(GMT)からのNSDate


var date:NSDate = NSDate();
date = NSDate(timeIntervalSince1970: 60);//1970年の1月1日9時(GMT)から1分後。日本の開発環境なので、9時になります。

sinceDate-特定の日付(NSDate)から計算した日数のNSDate(文字列から日付への変換)


//2015年1月1日12時34分56秒のNSDateを作成
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss";
let dateOf2015_01_01_12_34_56 = dateFormatter.dateFromString("2015-01-01 12:34:56")!;
var date:NSDate = NSDate();
date = NSDate(timeInterval: 60, sinceDate: dateOf2015_01_01_12_34_56);//2015年1月1日12:34分より1分後

日付の参照(YYYYとかMMとか、、、)はこちらのサイトが便利です。Formatting Dates and Times

おまけ:NSCalenderをつかってNSDateを作成する場合(数値から日付への変換)


let date = NSDate()
let calendar = NSCalendar(identifier: NSGregorianCalendar);//和暦を使いたいときはidentifierにはNSJapaneseCalendarを指定
var comps:NSDateComponents? = calendar?.components(NSCalendarUnit.YearCalendarUnit|NSCalendarUnit.MonthCalendarUnit|NSCalendarUnit.DayCalendarUnit|NSCalendarUnit.HourCalendarUnit|NSCalendarUnit.MinuteCalendarUnit|NSCalendarUnit.SecondCalendarUnit,fromDate: date);
comps?.day -= 7;//7日前。一週間前。このあたりで日付を調整します。
let dateAweekAgo = comps?.date;//現在時刻から一週間前のNSDate


曜日を取得する(以下の例は現時点での曜日を取得しています。)


        let today:NSDate = NSDate();
        let date_formatter: NSDateFormatter = NSDateFormatter();
        date_formatter.locale = NSLocale(localeIdentifier: "ja");

        let weekdays:Array  = ["", "日", "月", "火", "水", "木", "金", "土"]
        let calendar = NSCalendar.currentCalendar();
        let comps = calendar.components([.Year, .Month, .Day, .Weekday, .Hour, .Minute, .Second, .Nanosecond], fromDate: today);
        
        date_formatter.dateFormat = "yyyy年MM月dd日(\(weekdays[comps.weekday])) HH時mm分ss秒"
        print(date_formatter.stringFromDate(today)) // 2015年10月19日(月) 20時14分14秒
        

日付の比較

compare関数を利用して日付の大小を判断します


//date2014とdate2015を比較
import Foundation
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss";
let date2014 = dateFormatter.dateFromString("2014-01-01 12:34:56")!;
let date2015 = dateFormatter.dateFromString("2015-01-01 12:34:56")!;

if (date2014.compare(date2015) == NSComparisonResult.OrderedDescending){
    print("- 日付が対象より古い");
}else if (date2014.compare(date2015) == NSComparisonResult.OrderedAscending){
    print("- 日付が対象より新しい");//上記の場合、date2014の方が2015年よりも小さいのでここにきます。
}else{
    print("- 日付が同じです");
}

まとめ

関連記事は以下からどうぞ。

日付がをprintlnすると日本時間ではない?を解説

↓こんな記事もありますよ!

UIWebView

アプリの中にWebビューを作成して外部ネットワークやローカルのhtmlやcssやjsファイルと連携する方法の説明です。

AppleWatchアプリの申請

AppleWatchアプリの申請が4月1日から始まりましたので、少しトライしてみました。ハマった箇所を共有です。 アプリをArchiveしてValidateしてから2パターンの不具合、あとはアップロードには成功したのですが、Itunesに反映されなかった 現象を共有です

WWDC2015で面白い発表があるのかワクワクしてみる。

OS9の発表だったり、 iPadでアプリを分割して複数表示できたり、Apple Payがカナダに対応したり(それはどうでもいいですかね、、、)、 盛りだくさん。Appleファンには たまらない色んな新情報が色々でてきていますのでその中で私がきになる情報をフォーカスして少し調査してみます。 Swift関連もあるようですので共有してまいります。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!