我需要創建一個計時器,從我從服務器獲得的字符串倒計時。字符串輸出總剩餘秒數。時間計算給出越來越錯誤的結果
我正在使用此代碼 - 它計算的初始數字時間正確,它倒計時但分鐘是問題。
編輯 - 每分鐘計算每增加一分鐘。但我不明白爲什麼它這樣做。
- (空)showTimmer:(ID)發送{
//get total amount of seconds
NSString *timeRaw = [ArrayFromServer objectAtIndex:1];
NSArray *timeArr = [timeRaw componentsSeparatedByString:@","];
timetoInt = [timeArr objectAtIndex:0];
int time1 = [timetoInt intValue];
//set the second countdown
NSDate* now = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [gregorian components:(NSSecondCalendarUnit) fromDate:now];
NSInteger seconds = time1 - [dateComponents second];
[gregorian release];
// do the hours days maths
int hour = (seconds/3600);
seconds -= hour * 3600;
int minute = (seconds/60);
seconds -= minute * 60;
int second = seconds;
//set the labels
countdownLabel.text = [NSString stringWithFormat:@"%02dH %02dM %02ds", hour, minute, second];
另一個選擇是將開始時間保存爲一個'NSDate',然後你可以這樣做'NSInteger elapsedTime =(NSInteger)[startDate timeIntervalSinceNow];' – 2011-03-26 03:27:59
這個工作完美謝謝你,一旦知道它簡單得多。 – jaggi 2011-03-27 17:51:50
是的,我認爲這是一個舍入錯誤,直到我意識到'NSDateComponents'在做什麼。那個階級及其同伴的文件絕對是簡潔的一面。 (我個人最喜歡的是['NSCalendar -firstWeekday'](http://developer.apple。com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSCalendar_Class/Reference/NSCalendar.html#// apple_ref/occ/instm/NSCalendar/firstWeekday。)順便說一下,你可以嘗試使用double,這就是'CF-'和'NS-''TimeInterval'都是。然後根據需要使用'fmod','ceil'和'floor'。無論如何,很高興我能幫上忙! – 2011-03-27 20:40:22