3

イベントまでの残り日数を示すラベルを作成しようとしています。今日の日付とイベントの日付の差を計算したい。私はこのコードを使用しており、-4600 が返されます。今日の日付を使用するまでは問題なく動作します。

NSDateFormatter *f = [[NSDateFormatter alloc] init];
    [f setDateFormat:@"yyyy-MM-dd"];
    NSDate *startDate = [NSDate date];
    NSDate *endDate = [f dateFromString:end];
    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
                                                        fromDate:startDate
                                                          toDate:endDate
                                                         options:0];
    return components.day;
return components.day;
4

1 に答える 1

16

デフォルト[NSDate date]では日付を返し2013-08-06 08:50:25 +0000 、フォーマッタをyyyy-MM-ddこれに設定しているため、startDate をyyyy-MM-ddこのフォームに変換する必要があります。

これを試して

NSDateFormatter *f = [[NSDateFormatter alloc] init];
    [f setDateFormat:@"yyyy-MM-ddHH:mm:ss ZZZ"];
    NSDate *startDate = [NSDate date];
    NSLog(@"%@",startDate);
    NSDate *endDate = [f dateFromString:end];
    NSLog(@"%@",endDate);


    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
                                                        fromDate:startDate
                                                          toDate:endDate
                                                         options:0];
    return components.day; 
于 2013-08-06T08:48:25.337 に答える