有个哥们做物联网的,后台给具体的时间字符串,让iOS端计算出相差的具体时间,精确到天、小时、分钟;由于后台是以字符串形式给的(我也不清楚他们后台咋想的),所以还要转换为Date,用时间戳进行计算,最后将差换算成天、小时、分钟!
-(NSDictionary *)timeStrChangeWithFormatterStr:(NSString *)severTimeStr
{
NSString * dayString=@"0";
NSString * hourString=@"0";
NSString * minuteString=@"0";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
NSDate* date = [formatter dateFromString:severTimeStr];//------------将字符串@"2017-01-01 08:40:00"按formatter转成nsdate
double severTime=[date timeIntervalSince1970];
double localSeverTime=[[NSDate date] timeIntervalSince1970];
double poorTime=localSeverTime-severTime;
NSNumber *numStage = [NSNumber numberWithDouble:poorTime];
NSString *numStr = [NSString stringWithFormat:@"%0.0lf",[numStage doubleValue]];//将double类型数据取整
NSInteger timeInt=[numStr integerValue];
if (timeInt>=86400)
{
dayString = [NSString stringWithFormat:@"%ld", timeInt/86400];
timeInt-=[dayString integerValue]*86400;
}
if (timeInt>=3600 && timeInt<86400) {
hourString = [NSString stringWithFormat:@"%ld", timeInt/3600];
timeInt-=[hourString integerValue]*3600;
}
if (timeInt<3600) {
minuteString = [NSString stringWithFormat:@"%ld", timeInt/60];
}
return @{@"dayString":dayString,@"hourString":hourString,@"minuteString":minuteString};
}