2013-01-08 34 views
1

我使用下面的代码在Xcode:语法错误日期计算

(void)updateLabel 
{ 
    NSDate* now = [NSDate date]; 
    int hour = 23 - [[now dateWithCalendarFormat:nil timeZone:nil] hourOfDay]; 
    int min = 59 - [[now dateWithCalendarFormat:nil timeZone:nil] minuteOfHour]; 
    int sec = 59 - [[now dateWithCalendarFormat:nil timeZone:nil] secondOfMinute]; 
    countdownLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hour, min,sec]; 
} 

而且正在以下错误。我怎样才能解决这个问题?

error: invalid operands to binary - (have 'int' and 'id')

+0

这行给出你的错误? –

+0

全部三个.......其中int用于小时,分钟,秒 –

+0

我在我的系统中尝试了相同的代码,它工作良好。 –

回答

1

您必须使用这种方式: -

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *dateComponents = [gregorian components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:[NSDate date]]; 
NSInteger hour = [dateComponents hour]; 
NSInteger minute = [dateComponents minute]; 
NSInteger second = [dateComponents second]; 
[gregorian release]; 

希望它可以帮助你

0

用这种方式

NSDate* now = [NSDate date]; 

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *dateComponents = [gregorian components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:now]; 
long hour =23-[dateComponents hour]; 
long min =59-[dateComponents minute]; 
long sec =59-[dateComponents second]; 

NSString *str = [NSString stringWithFormat:@"%02ld:%02ld:%02ld", hour, min,sec]; 
NSLog(@"--> %@",str);