我有一个跨越数年的时间间隔,我想要从一年到秒的所有时间组件。
我的第一个想法是将时间间隔除以一年中的秒数,从运行总秒数中减去,再除以一个月中的秒数,从运行总数中减去,等等。
这看起来很复杂,而且我读到,每当你做一些看起来很复杂的事情时,可能有一个内置的方法。
在那儿?
我将 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 设置),但它经常关闭。这证明有一个不准确的地方,但我无法弄清楚它来自哪里,你能吗?