2017-01-25 6 views
1

私のような質問がたくさんありましたが、なぜうまくいかないのか分かりません。NSDateの時刻を取得して日付を無視する問題

私はCore Dataデータベースに営業時間のリストを持っています。 私は、特定の日付の間、それが開いているか閉じているかを知りたいと思います。

しかし、私は日付を確認したくありません。時間、分、秒のみ。

ここに私のオブジェクトオープニングのモデル:

  • のNSNumber *日。
  • NSDate * start;
  • NSDate * end;

私の問題は、NSDateオブジェクトから時間を抽出した後の元の日付よりも正確に42分30秒以上です。

ここに私のコード:

NSCalendar * calendar = [NSCalendar currentCalendar]; 
NSCalendarUnit flags = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 

for (Opening * opening in openingsForDate) { 

    NSDateComponents *date1Components = [calendar components:flags fromDate:date]; 
    NSDateComponents *date2Components = [calendar components:flags fromDate:opening.start]; 
    NSDateComponents *date3Components = [calendar components:flags fromDate:opening.end]; 

    NSDate *date1 = [calendar dateFromComponents:date1Components]; 
    NSDate *date2 = [calendar dateFromComponents:date2Components]; 
    NSDate *date3 = [calendar dateFromComponents:date3Components]; 

    NSLog(@"%@ => %@", date, date1); 
    NSLog(@"%@ => %@", opening.start, date2); 
    NSLog(@"%@ => %@", opening.end, date3); 
} 

ここで出力:

2017-01-25 22:10:41 +0000 => 0001-01-01 22:53:11 +0000 
2017-01-25 11:00:00 +0000 => 0001-01-01 11:42:30 +0000 
2017-01-25 22:00:00 +0000 => 0001-01-01 22:42:30 +0000 

任意のアイデア? ありがとうございます。

編集:解決策here

+0

NSDateの代わりにNSNumberを保存する必要がありますか。だから時間、分、秒をNSTimeIntervalに変換し、これを私のコアデータデータベースに保存しますか?しかし、なぜ私は42分30秒以上持っているのか分かりません^^ – Lapinou

答えて

0

NSDateに変換する代わりに、NSDateComponents時、分、秒のプロパティを使用して深夜から秒を計算してください。次に、整数を比較するだけです。

NSInteger compareSeconds = date1Components.second + (date1Components.minute*60) + (date1Components.hour*60*60); 
NSInteger openingSeconds = date2Components.second + (date2Components.minute*60) + (date2Components.hour*60*60); 
NSInteger closingSeconds = date3Components.second + (date3Components.minute*60) + (date3Components.hour*60*60); 

if (openingSeconds<compareSeconds && closingSeconds>compareSeconds){ 
    // Open 
} else { 
    // Closed 
} 
+0

正しく動作しません。私の編集を参照してください。とにかくありがとうございました :) – Lapinou

関連する問題