我有一個跨越幾年的時間間隔,我希望所有的時間從一年下降到秒。如何在iPhone上將NSTimeInterval分解爲年,月,日,小時,分鐘和秒鐘?
我的第一個想法是在一年內將整個時間間隔除以秒,從一秒鐘的總運行時間中減去該時間間隔,在一個月內將其除以秒,從運行總和中減去該時間間隔,依此類推。
這似乎令人費解,我讀過,當你做一些看起來很複雜的事時,可能有一種內置方法。
有嗎?
我將Alex的第二種方法整合到我的代碼中。
它在我的界面中由UIDatePicker調用的方法。
NSDate *now = [NSDate date];
NSDate *then = self.datePicker.date;
NSTimeInterval howLong = [now timeIntervalSinceDate:then];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:howLong];
NSString *dateStr = [date description];
const char *dateStrPtr = [dateStr UTF8String];
int year, month, day, hour, minute, sec;
sscanf(dateStrPtr, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &sec);
year -= 1970;
NSLog(@"%d years\n%d months\n%d days\n%d hours\n%d minutes\n%d seconds", year, month, day, hour, minute, sec);
當我設定的日期選取器日期1年零1天過去,我得到:
1年1個月1天16小時0 分20秒
這是1個月和16個小時了。如果我過去將日期選擇器設置爲1天,那麼我的數量就會減少。
更新:我有一個應用程序,計算你的年齡,考慮到你的生日(從UIDatePicker設置),但它經常關閉。這證明存在不準確性,但我無法弄清楚它來自哪裏,對嗎?
如果您設定的日期選取器一天前,你就要去以一個月爲六個小時? – 2009-08-06 19:10:04
是的,一個月零十六個小時。 – willc2 2009-08-07 01:19:15
如果結果持續一個月零十六個小時,無論您選擇什麼值,無論是從變量中減去該值,還是移位,或者您需要評估錯誤來自哪裏。我的猜測是,如果你總是偏離這個數值,那麼你的時間間隔就不對了。 – 2009-08-07 23:15:52