1

@"mm:ss" 形式の文字列に期間 (秒単位) をフォーマットする以下のメソッドがあります。特定の値 60 が入力されると、このメソッドは予期しない動作をします。

  • 期間 = 59 -> @"00:59"
  • 期間 = 60 -> @"59:59" (@"01:00" と予想される)
  • 期間 = 61 -> @"01:01"

メソッド:

+ (NSString *)formatDuration:(NSTimeInterval)duration
{    
    NSDateFormatter *durationFormatter = [[NSDateFormatter alloc] init];
    [durationFormatter setDateFormat:@"mm:ss"];

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *zeroComponents = [[NSDateComponents alloc] init];
    zeroComponents.hour = 0;
    zeroComponents.minute = 0;
    zeroComponents.second = 0;

    NSDate *zeroDate = [calendar dateFromComponents:zeroComponents];
    [zeroComponents release];
    NSDate *endDate = [NSDate dateWithTimeInterval:duration sinceDate:zeroDate];

    return [[durationFormatter autorelease] stringFromDate:endDate];
}
4

0 に答える 0