2012-02-06 8 views
3

オブジェクトのtimeStampプロパティを設定しています。今はちょうど[NSDate date]を使用しています。ユーザーは1日に10個のオブジェクトを作成する可能性があります。しかし、UIで、私はそれらを日付までにドロップしたい。毎日、その日に作成されたすべてのオブジェクトが表示されます。これどうやってするの?今、それは日ごとにNSDateオブジェクトをグループ化するには?

など、日付と時刻を一致させるために
Example: 
Obj1 - 2/5/12 5pm 
Obj2 - 2/5/12 12pm 
Obj3 - 2/4/12 6pm 
Obj4 - 2/1/12 1pm 

をしようとしている私は、一日で2/5のための1、2/4、2/1およびグループのものにできるようにする必要があります。

答えて

1

あなたの質問は広範に公式化されています。 NSStringとして、NSDateオブジェクトの日付部分を取得するには、使用できます。

NSDate *dateIn = [NSDate date]; 

NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; 
[fmt setDateFormat:@"yyyy-MM-dd"]; 
NSString *stringOut = [fmt stringFromDate:dateIn]; 
[fmt release]; 

あなたは簡単に日付形式を変更することができます。このコードを頻繁に呼び出す(ループなどで)場合は、日付フォーマッタを1回だけ割り当てて設定することをお勧めします。

+0

私は誰がそれを行うのか知っていますが、どうすれば比較できますか?だから私はObj1 - 2/5/12午後5時 Obj2 - 2/5/12午後12時..私は時間を切り捨てて、それらを一緒にグループ化するために@ "yyyy-MM-dd"形式を使用することができますか? – Jon

+0

実際には日付のみを使用している形式を使用します。 「時間を切り捨てる」必要はありません。 – mvds

3

NSDateComponentsクラスを使用すると、NSDateインスタンスの日、月、および年に直接アクセスできるようになります。

NSDate *someDate = [NSDate date]; 
NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:someDate]; 

NSLog(@"Year: %d", [components year]); 
NSLog(@"Month: %d", [components month]); 
NSLog(@"Day: %d", [components day]); 

ここNSDateComponents比較法だ:私はNSDateComponents比較方法をテストしていません

- (BOOL)isFirstCalendarDate:(NSDateComponents *)first beforeSecondCalendarDate:(NSDateComponents *)second 
{ 
    if ([first year] < [second year]) { 
     return YES; 
    } else if ([first year] == [second year]) { 
     if ([first month] < [second month]) { 
      return YES; 
     } else if ([first month] == [second month]) { 
      if ([first day] < [second day]) { 
       return YES; 
      } 
     } 
    } 
    return NO; 
} 

。ユニットテストの恩恵を受けるでしょう。

関連する問題