3

オブジェクトの timeStamp プロパティを設定しています。今、私はちょうど使用して[NSDate date]います。ユーザーは 1 日あたり 10 個のオブジェクトを作成する場合があります。しかし、UI では、日付ごとにドロップしたいと考えています。したがって、毎日、その日に作成されたすべてのオブジェクトが表示されます。これどうやってするの?現在、日付と時刻などを一致させようとしています。

Example: 
Obj1 - 2/5/12 5pm
Obj2 - 2/5/12 12pm
Obj3 - 2/4/12 6pm
Obj4 - 2/1/12 1pm

2/5、2/4、および 2/1 の 1 つで、これらを日ごとにグループ化できる必要があります。

4

2 に答える 2

4

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 比較メソッドは次のとおりです。

- (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;
}

NSDateComponents 比較メソッドはテストしていません。単体テストの恩恵を受けるでしょう。

于 2012-02-06T02:41:44.577 に答える
1

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

NSDate *dateIn = [NSDate date];

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

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

于 2012-02-06T00:56:19.587 に答える