今天下午就计算这个时间折腾了我一个下午 ,好好总结 ,记住
NSDate *currentdate = [NSDate date]; //获取当前时间
NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; //初始化时间格式符
[formatter setDateFormat:@"HH"]; //设置时间格式符的格式 ,我这里只是想获取今天几点用于计算
NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init];
[formatter1 setDateFormat:@"dd"]; //我这里只是想获取今天几号用于计算
NSString *currentDateStr1 = [formatter1 stringFromDate:currentdate];//根据时间格式符获取时间
NSInteger dataNow = [currentDateStr1 integerValue]; //转成NSInteger类型
NSString *currenthourStr = [formatter stringFromDate:currentdate];
NSInteger hourNow = [currenthourStr integerValue];
//TimeStop = "2016-12-07T18:15:00"; 我服务器给的时间 给了个T 不然也不要字符串这么多操作
if (_model.TimeStop!=nil ) { //确认获取的model里面有数据
NSArray *array1 = [_model.TimeStop componentsSeparatedByString:@"-"]; // 以“-”字符为分割线切割 第一部分为 2016,第二部分为 12 第三部分为 07T18:15:00 三个部分组成一个array1
NSString *yearMonthDay = [array1 objectAtIndex:2]; //选择第3部分的string
NSArray *dayarray = [yearMonthDay componentsSeparatedByString:@"T"]; //将07T18:15:00 分割,分割线为字符“T”, 第一部分为07 第二部分 为 18:15:00 两个部分组成一个dayarray
NSInteger day = [[dayarray firstObject]integerValue]; // 07为服务器给我的 day 就是7号,转成NSInteger
NSString *time = [dayarray lastObject]; //time时间为 18:15:00
NSArray *last = [time componentsSeparatedByString:@":"]; //再以 “:“为分割线获取我要的hour ,分成三部分 。
NSInteger hour1 = [[last firstObject]integerValue]; // 第一部分为我要的hour 转成NSInteger
NSInteger leaveDay = day -dataNow; //得到剩余天数
NSInteger leaveHour = hour1 - hourNow; //得到剩余hour
NSString *endstr1 = [_model.TimeStop stringByReplacingOccurrencesOfString:@"T" withString:@" "]; //将服务器上的T用空格替换2016-12-07 18:15:00
NSArray *endarray = [endstr1 componentsSeparatedByString:@":"];
NSString *str2 = [endarray firstObject]; //获得2016-12-07 18
NSString *str3 = [endarray objectAtIndex:1]; 获得15
NSString *endstr2 = [str2 stringByAppendingString:@":"]; //追加字符串: 获得2016-12-07 18:
NSString *endstr = [endstr2 stringByAppendingString:str3]; //再追加str3 获得 2016-12-07 18:15
if (leaveDay>0&&leaveHour>0) {
_timeLabel.text = [NSString stringWithFormat:@"%@(仅%li天%li小时)",endstr,leaveDay,leaveHour];
}
if (leaveDay>1&&leaveHour<0) {
_timeLabel.text = [NSString stringWithFormat:@"%@(仅%li天%li小时)",endstr,leaveDay-1,leaveHour+24];
}
if (leaveDay==1&&leaveHour<0) {
_timeLabel.text = [NSString stringWithFormat:@"%@(仅%li小时)",endstr,leaveHour+24];
}
if (leaveDay==0&&leaveHour>0) {
_timeLabel.text = [NSString stringWithFormat:@"%@(仅%li小时)",endstr,leaveHour];
}
}
// 常用的时间格式符 这个链接里面很全(看到的)
http://blog.youkuaiyun.com/zhugq_1988/article/details/8498672