4

本当に助けが必要です。コードの結果は2:0:0、フォーマットが に設定されている場合hh:mm:ssです。結果を(分と秒が下にある場合は前に2:00:00追加します)。010

NSDateFormatter *test = [[NSDateFormatter alloc] init];
[test setDateFormat:@"HH:mm:ss"];
NSDate *date1 = [test dateFromString:@"18:00:00"];
NSDate *date2 = [test dateFromString:@"20:00:00"];
NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned int uintFlags =  NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents* differenceComponents = [gregorian components:uintFlags fromDate:date1 toDate:date2 options:0];

NSLog(@"%d:%d:%d",[differenceComponents hour],[differenceComponents minute],[differenceComponents second]);

これを行う方法?

4

2 に答える 2

6

%02ld次のように、指定子を使用してログに記録します。

NSLog(@"%ld:%02ld:%02ld",[differenceComponents hour],[differenceComponents minute],[differenceComponents second]);

出力:

2:00:00

さらにNSStrings次のように作成します。

NSString *theString = [NSString stringWithFormat:@"%ld:%02ld:%02ld",[differenceComponents hour],[differenceComponents minute],[differenceComponents second]];
NSLog(@"%@",theString);
于 2012-08-31T00:42:40.033 に答える
0

問題は次のとおりです。00-00は0です。以前は問題があり、このように解決しました

-(NSString*)formatIntToString:(int)inInt{
if (inInt <10) {
    NSString *theString = [NSString stringWithFormat:@"0%d",inInt];
    return theString;
}
else {
    NSString *theString = [NSString stringWithFormat:@"%d",inInt];
    return theString;
}}

NSLog で次のように使用します。

NSLog(@"%@:%@:%@",[self formatIntToString:[differenceComponents hour]],[self formatIntToString:[differenceComponents minute]],[self formatIntToString:[differenceComponents second]]);
于 2012-08-31T00:40:28.577 に答える