计算两个时间之间的差值

最近有一个功能,需要计算同一天内两个时间之间的差值,开始打算将NSDate先转换成NSString,然后转后成int类型数据进行换算对比。
但是这种方法太过繁琐,时间之间的对比要逐一对比小时分钟,然后还要将结果进行转换,实在是麻烦。这里我使用了NSCalendar类。
下面来看一下具体的实现:
首先先拿到当前时间,并转换成字符串:

//获取当前时间
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSString *dateStr = [formatter stringFromDate:date];

同样也将要比较的时间(我们这里将其称为开始时间)转换成相同格式的字符串:

  //开始时间
  NSString *beginTime = dict[@"BeginTime"];

下面进入正题,比较两个时间字符串:

//计算当前时间和开始时间的差值
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth
| NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
//对比时间差
NSDateComponents *component = [calendar components:unit fromDate:beginDate toDate:nowDate options:0];
NSLog(@"年差额 = %ld, 月差额 = %ld, 日差额 = %ld, 小时差额 = %ld, 分钟差额 = %ld, 秒差额 = %ld",(long)component.year,component.month,component.day,component.hour,component.minute,component.second);

这样我们就分别得到了年、月、日、时、分、秒的差额,如果你想要得到一个时间相差总额,比如说一天内两个时间点之间的总差额,你只需要进行简单的计算:component.hour *60 + component.minute即可得到两个时间总共相差的分钟数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,268评论 0 4
  • SwiftDate概况 从Swift发布起,我们就没有放弃使用Swift。 当然,我们希望在项目能够轻松自如地管理...
    Mee_Leo阅读 10,182评论 1 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 作者:gabriel theodoropoulos,原文链接,原文日期:2015-10-18译者:ray16897...
    梁杰_numbbbbb阅读 3,856评论 0 11
  • 此时此刻,办公室里只有我一个人,刚把手头的急事处理完,此刻电话也安静了,真希望就这样一直安静下去。自从加入文学疯人...
    蕙印阅读 307评论 0 0