2012-03-24 14 views
0

私はクラスのiphoneアプリケーションで作業しています。私のグループは時間の問題を抱えています。現在の時間が時間範囲内にあるかどうかを計算する方法

予定されているイベント(たとえば午後2時)があり、私たちがスケジュールされた時間(例えば+/- 15分)から一定時間内にいるかどうかを知りたいと考えています。したがって、イベントが午後2時であった場合、このイベントが1:45-2:15pmから呼び出された場合、メソッドはtrue/yesを返し、そうでない場合はfalse/noを返します。

私は現在の時刻/日付の使い方を知っていますが、イベント時間から特定の時間範囲内にあるかどうかを確認するためにどのようにして部品を実行しますか? ?

それでは、私はCURRENTTIMEは、現在の時間NSDateオブジェクトを取得し、classStartTimeは、クラスの開始時間をNSDateオブジェクトを取得して、次のような方法になるためつもりです:

- (BOOL)dateInRange:(NSDate*)currentTime inRangeOf:(NSDate*)classStartTime 
{ 
    if([currentTime <= [classStartTime dateByAddingTimeInterval:60*15]] && [currentTime >= [classStartTime dateByAddingTimeInterval:-(60*15)]]) 
    { 
     return TRUE; 
    } 
    else{ 
     return FALSE; 
    } 
} 

Iそれは動作しないことを知っている。 if文の比較部分を正しく動作させるにはどうすればいいですか?

+1

[NSDateが他の2つのNSDate間で発生するかどうかをチェックする方法](http://stackoverflow.com/questions/1072848/how-to -check-if-an-nsdate-between-other-other-nsdates) –

答えて

0

私の時間はNSDateです。あなたのインターバルの開始時間にTimeIntervalSinceDate:を使用して、結果があなたのインターバルの長さよりも正で小さいかどうかを調べることができます。

0

NSDateおよびNSDateComponentsを使用してください。私は近くにMacを持っていないので、次のコードはおそらくそれにエラーがあるでしょう。その後、比較メソッドを使用します(NSDate *)日付

:(NSTimeInterval)秒sinceDate:

NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; 
int comp = NSHourCalendarUnit | NSMinuteCalendarUnit; 
NSDateComponents *theDateComponents = [gregorian components:comp fromDate:[NSDate date]]; 
int hour = [theDateComponents hour]; 
int minute = [theDateComponents minute]; 
if ((hour == 13 && minute >= 45) || (hour == 14 && minute <= 15)) { 
    //do your stuff 
} 

は、それが

+0

コンポーネントを気にしないでください。ビットは2つの値を比較する方がずっと簡単です。 –

0

は +(ID)dateWithTimeIntervalで開始日と終了日を探すことができますホープチェックしている日付があなたの日付の範囲内であることを確認してください...

関連する問題