How to parse an ISO-8601 duration in Objective C?

前端 未结 12 664
清歌不尽
清歌不尽 2020-12-01 06:52

I\'m looking for an easy way to parse a string that contains an ISO-8601 duration in Objective C. The result should be something usable like a NSTimeI

12条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-01 07:28

    Quick and dirty implementation

        - (NSInteger)integerFromYoutubeDurationString:(NSString*)duration{
    
        if(duration == nil){
            return 0;
        }
    
        NSString *startConst = @"PT";
        NSString *hoursConst = @"H";
        NSString *minutesConst = @"M";
        NSString *secondsConst = @"S";
        NSString *hours = nil;
        NSString *minutes = nil;
        NSString *seconds = nil;
        NSInteger totalSeconds = 0;
    
        NSString *clean = [duration componentsSeparatedByString:startConst][1];
    
        if([clean containsString:hoursConst]){
            hours = [clean componentsSeparatedByString:hoursConst][0];
            clean = [clean componentsSeparatedByString:hoursConst][1];
            totalSeconds = [hours integerValue]*3600;
        }
        if([clean containsString:minutesConst]){
            minutes = [clean componentsSeparatedByString:minutesConst][0];
            clean = [clean componentsSeparatedByString:minutesConst][1];
            totalSeconds = totalSeconds + [minutes integerValue]*60;
        }
        if([clean containsString:secondsConst]){
            seconds = [clean componentsSeparatedByString:secondsConst][0];
            totalSeconds = totalSeconds + [seconds integerValue];
        }
    
        return totalSeconds;
    }
    

提交回复
热议问题