iOS 开发技巧 - 计算两个时间的差值

2,187 阅读1分钟
原文链接: www.jianshu.com

最近在模仿一款APP,其中有一个显示内容是从现在的时间到规定截止时间的剩余时间,以时分秒的形式显示出来,下面我自己使用的方法奉上:

首先,获得当前时间

NSDate *nowDate = [NSDate date];

然后,创建一个日期格式化格式 (这样说应该没有错吧)
NSDateFormatter *dateFomatter = [[NSDateFormatter alloc] init];
dateFomatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.0";
接着,就是获得剩余截止时间数据
// 截止时间字符串格式
NSString *expireDateStr = status.expireDatetime;
// 当前时间字符串格式
NSString *nowDateStr = [dateFomatter stringFromDate:nowDate];
// 截止时间data格式
NSDate *expireDate = [dateFomatter dateFromString:expireDateStr];
// 当前时间data格式
nowDate = [dateFomatter dateFromString:nowDateStr];
// 当前日历
NSCalendar *calendar = [NSCalendar currentCalendar];
// 需要对比的时间数据
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth
| NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
// 对比时间差
NSDateComponents *dateCom = [calendar components:unit fromDate:nowDate toDate:expireDate options:0];
最后,提取自己需要的时间差数据
// 伪代码
年差额 = dateCom.year, 月差额 = dateCom.month, 日差额 = dateCom.day, 小时差额 = dateCom.hour, 分钟差额 = dateCom.minute, 秒差额 = dateCom.second