↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

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

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すると日本時間ではない?を解説

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


2021-05-14 14:21:41

WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。

AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、 昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は...

2021-05-06 14:04:37

LINEのアニメーションスタンプ制作の落とし穴、、、失敗談

ゴールデンウィークにLINEスタンプを作成してみました。 作り切って申請も通したんですが、意図したアニメーションと違う、、、、 LINEクリエーターの画面だと、アニメーションのプレビュー...

2021-05-01 18:05:35

久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。

忘れないようにメモ エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。 ターゲット→ex...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!