如何使用objective-c格式化从youtube api v3 reuqest返回的持续时间?

Ala*_*gwa 2 iphone objective-c ios youtube-data-api

如何使用objective-c将此时间段"PT1H20M10S"格式化为"1:20:10"?这是从请求返回到youtube.它给了我一个时间段.如何将"PT1H20M10S"这样的"1:20:10"出现在我的应用程序中是否可读?

tim*_*ous 5

您可以使用以下代码:

- (NSString *)parseDuration:(NSString *)duration {
  NSInteger hours = 0;
  NSInteger minutes = 0;
  NSInteger seconds = 0;

  NSRange timeRange = [duration rangeOfString:@"T"];
  duration = [duration substringFromIndex:timeRange.location];

  while (duration.length > 1) {
    duration = [duration substringFromIndex:1];

    NSScanner *scanner = [NSScanner.alloc initWithString:duration];
    NSString *part = [NSString.alloc init];
    [scanner scanCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&part];

    NSRange partRange = [duration rangeOfString:part];

    duration = [duration substringFromIndex:partRange.location + partRange.length];

    NSString *timeUnit = [duration substringToIndex:1];
    if ([timeUnit isEqualToString:@"H"])
      hours = [part integerValue];
    else if ([timeUnit isEqualToString:@"M"])
      minutes = [part integerValue];
    else if ([timeUnit isEqualToString:@"S"])
      seconds = [part integerValue];
  }

  return [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}
Run Code Online (Sandbox Code Playgroud)

您还可以在此处阅读ISO_8601持续时间.