2010年5月5日水曜日

日時の計算や比較

現在日時に特定の秒数加算した時刻を取得するには、以下のようにします。


    NSDate* dt = [NSDate dateWithTimeIntervalSinceNow:60.0f];

上記では、現在時刻に60秒加算した日時を取得しています。
パラメータはdouble型なので「60.0f」としています。

dateWithTimeIntervalSinceNowは静的メソッドなので上のような書き方ができますが、NSDateクラスの値は途中変更ができないので、特定日時から計算するには、以下のようにNSDateクラスのインスタンスを複数作成する必要があります。


    NSDate* dt1 = [NSDate dateWithTimeIntervalSinceNow:60.0f];
    NSDate* dt = [dt1 addTimeInterval:120.0f];


上記は現在時刻に60秒加算した時刻をdt1に格納し、dt1に120秒加算した値をdtに格納しているので、結果、dtには現在時刻より3分進んだ時刻が格納されます。


日時を比較するには、NSDateクラスのcompareメソッドを使います。


    NSComparisonResult result = [dt1 compare:dt];
    switch(result)
    {
    case NSOrderedAscending:
        // dt is bigger than dt1
        break;
    case NSOrderedDescending:
        // dt is smaller than dt1
        break;
    case NSOrderedSame:
        // dt is same with dt1
        break;
    }

結果はNSComparisonResultに返ってきます。

また、日時が特定の日時と同じかどうかだけ知りたい場合は、isEqualToDateメソッドを使います。

    BOOL result = [dt isEqualToDate:dt1];
    if(result == YES)
    {
        // same
    }
    else
    {
        // different
    }

isEqualToDateメソッドの結果はBOOL型で返却されます。
BOOL型にはC、C++、C#ではtrue / falseが格納されますが、Objective-Cの場合はYES / NOです。

0 件のコメント:

コメントを投稿