| 155 | | static unsigned ParseSSATime(NSString *time) |
|---|
| 156 | | { |
|---|
| 157 | | unsigned hour, minute, second, millisecond; |
|---|
| 158 | | |
|---|
| 159 | | sscanf([time UTF8String],"%u:%u:%u.%u",&hour,&minute,&second,&millisecond); |
|---|
| 160 | | |
|---|
| 161 | | return hour * 100 * 60 * 60 + minute * 100 * 60 + second * 100 + millisecond; |
|---|
| | 155 | static unsigned ParseSubTime(const char *time, unsigned secondScale, BOOL hasSign) |
|---|
| | 156 | { |
|---|
| | 157 | unsigned hour, minute, second, subsecond, timeval; |
|---|
| | 158 | char separator; |
|---|
| | 159 | int sign = 1; |
|---|
| | 160 | |
|---|
| | 161 | if (hasSign && *time == '-') { |
|---|
| | 162 | sign = -1; |
|---|
| | 163 | time++; |
|---|
| | 164 | } |
|---|
| | 165 | |
|---|
| | 166 | if (sscanf(time,"%u:%u:%u%[,.:]%u",&hour,&minute,&second,&separator,&subsecond) < 5) |
|---|
| | 167 | return 0; |
|---|
| | 168 | |
|---|
| | 169 | timeval = hour * 60 * 60 + minute * 60 + second; |
|---|
| | 170 | timeval = secondScale * timeval + subsecond; |
|---|
| | 171 | |
|---|
| | 172 | return timeval * sign; |
|---|
| 229 | | [sc scanInt:&h]; [sc scanString:@":" intoString:nil]; |
|---|
| 230 | | [sc scanInt:&m]; [sc scanString:@":" intoString:nil]; |
|---|
| 231 | | [sc scanInt:&s]; [sc scanString:@"," intoString:nil]; |
|---|
| 232 | | [sc scanInt:&ms]; [sc scanString:@" --> " intoString:nil]; |
|---|
| 233 | | startTime = ms + s*1000 + m*1000*60 + h*1000*60*60; |
|---|
| 234 | | [sc scanInt:&h]; [sc scanString:@":" intoString:nil]; |
|---|
| 235 | | [sc scanInt:&m]; [sc scanString:@":" intoString:nil]; |
|---|
| 236 | | [sc scanInt:&s]; [sc scanString:@"," intoString:nil]; |
|---|
| 237 | | [sc scanInt:&ms]; [sc scanString:@"\n" intoString:nil]; |
|---|
| 238 | | endTime = ms + s*1000 + m*1000*60 + h*1000*60*60; |
|---|
| | 240 | [sc scanUpToString:@" --> " intoString:&res]; |
|---|
| | 241 | [sc scanString:@" --> " intoString:nil]; |
|---|
| | 242 | startTime = ParseSubTime([res UTF8String], 1000, NO); |
|---|
| | 243 | |
|---|
| | 244 | [sc scanUpToString:@"\n" intoString:&res]; |
|---|
| | 245 | [sc scanString:@"\n" intoString:nil]; |
|---|
| | 246 | endTime = ParseSubTime([res UTF8String], 1000, NO); |
|---|
| 673 | | } |
|---|
| 674 | | |
|---|
| 675 | | //static long scanTime(NSScanner *scanner) |
|---|
| 676 | | //{ |
|---|
| 677 | | // NSCharacterSet *decimalDigits = [NSCharacterSet decimalDigitCharacterSet]; |
|---|
| 678 | | // int hours, minutes, seconds, subSeconds, sign = 1; |
|---|
| 679 | | // NSString *signString = nil; |
|---|
| 680 | | // [scanner scanUpToCharactersFromSet:decimalDigits intoString:&signString]; |
|---|
| 681 | | // if([signString length]) |
|---|
| 682 | | // { |
|---|
| 683 | | // if([signString characterAtIndex:[signString length] - 1] == '-') |
|---|
| 684 | | // sign = -1; |
|---|
| 685 | | // } |
|---|
| 686 | | // [scanner scanInt:&hours]; |
|---|
| 687 | | // [scanner scanUpToCharactersFromSet:decimalDigits intoString:nil]; |
|---|
| 688 | | // [scanner scanInt:&minutes]; |
|---|
| 689 | | // [scanner scanUpToCharactersFromSet:decimalDigits intoString:nil]; |
|---|
| 690 | | // [scanner scanInt:&seconds]; |
|---|
| 691 | | // [scanner scanUpToCharactersFromSet:decimalDigits intoString:nil]; |
|---|
| 692 | | // [scanner scanInt:&subSeconds]; |
|---|
| 693 | | // |
|---|
| 694 | | // return sign * ((long)hours * 3600000 + (long)minutes * 60000 + (long)seconds * 1000 + (long)subSeconds); |
|---|
| 695 | | //} |
|---|
| 696 | | |
|---|
| 697 | | static long scanTime(const char *timeStr) |
|---|
| 698 | | { |
|---|
| 699 | | int hours = 0, minutes = 0, seconds = 0, milliseconds = 0, sign = 1; |
|---|
| 700 | | if(*timeStr == '-') |
|---|
| 701 | | { |
|---|
| 702 | | sign = -1; |
|---|
| 703 | | timeStr++; |
|---|
| 704 | | } |
|---|
| 705 | | |
|---|
| 706 | | sscanf(timeStr, "%d:%d:%d:%d", &hours, &minutes, &seconds, &milliseconds); |
|---|
| 707 | | return sign * ((long)hours * 60 * 60 * 1000 + (long)minutes * 60 * 1000 + (long)seconds * 1000 + (long)milliseconds); |
|---|