1

プログラムに次のコードがあります。

NSUInteger currentMinuteOrdinal = [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit inUnit:NSEraCalendarUnit forDate:[NSDate date]];
NSUInteger passedInMinuteOrdinal = [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit inUnit:NSEraCalendarUnit forDate:passedInDate];
NSUInteger minuteDifference = currentMinuteOrdinal - passedInMinuteOrdinal;

現在時刻は今日の午後 6 時 9 分です。通過時刻は今日の午後 4 時 17 分です。(デバッガーで値を見ているので、これらの値が正しいことはわかっています。) しかし、これら 2 つの序数値は常に同じ値になり、'minuteDifference' は 0 になります。

この方法はうまくいきませんか?それとも、私はひどく間違ったことをしていますか?

ありがとう。

4

1 に答える 1

2

あなたのコードは私のために働いているようです(私はそれをコピー/貼り付けます)、私はあなたがどのように処理するかわかりませんpassedInDate、私はあなたが指定したように日付を設定します:

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

//NSDate * dateA = [NSDate date];
NSDate * dateA = [formatter dateFromString:@"2009-12-15 06:09:00 +1100"];
NSDate * dateB = [formatter dateFromString:@"2009-12-15 04:17:00 +1100"];

NSUInteger currentMinuteOrdinal =
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit
                                            inUnit:NSEraCalendarUnit
                                           forDate:dateA];      // current

NSUInteger passedInMinuteOrdinal =
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit
                                            inUnit:NSEraCalendarUnit
                                           forDate:dateB];      // passed in

NSUInteger minuteDifference = currentMinuteOrdinal - passedInMinuteOrdinal;

NSLog(@" currentMinuteOrdinal: %d", currentMinuteOrdinal);
NSLog(@"passedInMinuteOrdinal: %d", passedInMinuteOrdinal);
NSLog(@"     minuteDifference: %d", minuteDifference);

この場合の出力:

2009-12-15 21:51:46.215 x[50036:903]  currentMinuteOrdinal: 1056606130
2009-12-15 21:51:46.216 x[50036:903] passedInMinuteOrdinal: 1056606018
2009-12-15 21:51:46.217 x[50036:903]      minuteDifference: 112
于 2009-12-15T10:54:08.160 に答える