iOS中两个时分秒字符串计算时长(不考虑跨夜)

对于一个程序员来说,没有实现不了的功能,只要有充足的时间。

话不多说,直接进入正题,客户端跟服务端通信使用的时间格式,一般是标准的时间戳,也有一些是格式化后的时间(YYYY-MM-dd HH:mm:ss),以上两种时间格式,下发到客户端都可以直接操作,转化成产品需求的时间格式。两个标准的时间戳计算时长其实就是简单的加减法操作了。那么问题来了,如果下发的时间格式不是上述提到的两种标准的格式,而是时分秒(08:40:40)的格式,应该怎么计算两个时间的时长?

10:20:20 与 08:40:40 相差多少秒?

1、创建一个时间对象并格式化为YYYY-MM-dd

     NSDate*date = [NSDate date];

     NSDateFormatter*format = [[NSDateFormatter alloc] init];

     [format setDateFormat:@"yyyy-MM-dd"];

     NSString*dateStr = [format stringFromDate: date];

2、用创建好的时间对象字符串拼接服务端下发的时间字符串

    NSString*inTime = [NSString stringWithFormat:@"%@ %@",dateStr,@"08:40:40"];

    NSString*outTime = [NSString stringWithFormat:@"%@ %@",dateStr,@"10:20:20"];

3、把拼接好的时间字符串转化为标准时间戳并计算时长

    NSDateFormatter*formatter = [[NSDateFormatter alloc]init];

   [formatter setDateStyle:NSDateFormatterMediumStyle];

   [formatter setTimeStyle:NSDateFormatterShortStyle];

   [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];// ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制

  NSTimeZone* timeZone = [NSTimeZone timeZoneForSecondsFromGMT:8];

  [formatter setTimeZone:timeZone];

  NSDate* startDate = [formatter dateFromString:inTime];

  NSTimeIntervalstartTime = [startDate timeIntervalSince1970];

  NSDate* endDate = [formatter dateFromString:inTime];

  NSTimeIntervalendTime = [startDate timeIntervalSince1970];

  float second = (endTime - startTime) /60.0;

  到此,计算时分秒的代码已全部写完。



     

你可能感兴趣的:(iOS中两个时分秒字符串计算时长(不考虑跨夜))