对于一个程序员来说,没有实现不了的功能,只要有充足的时间。
话不多说,直接进入正题,客户端跟服务端通信使用的时间格式,一般是标准的时间戳,也有一些是格式化后的时间(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;
到此,计算时分秒的代码已全部写完。