众所周知:
NSDate转NSString 的转化,代码如下:
1 NSString *birthdayStr=@"1986-03-28 00:00:00.000";
2 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
3 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
4 [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];//解决8小时时间差问题
5 NSDate *birthdayDate = [dateFormatter dateFromString:birthdayStr];
但是有时会遇到转化完结果 例如上面代码 birthdayDate 可能会出现为nil的情况。
如下代码,计算两个时间的时间差
+ (NSTimeInterval)pleaseInsertStarTime:(NSString *)starTime andInsertEndTime:(NSString *)endTime{
NSDateFormatter* formater = [[NSDateFormatter alloc] init];
[formater setDateFormat:@"YYYY-MM-dd hh:mm:ss.SSS"];//根据自己的需求定义格式
NSDate* startDate = [formater dateFromString:starTime];
NSDate* endDate = [formater dateFromString:endTime];
NSTimeInterval time = [endDate timeIntervalSinceDate:startDate];
return time;
}
如下图所示:
为什么会出现nil呢
可能是 NSDateFormatter 的格式设置的不统一,这里需要注意YYYY-MM-dd hh:mm:ss.SSS 这其中的每个字母都要保持前后一致,请注意yyyy和YYYY 是不一样的格式,HH和hh也是不一致的,格式不一致的转化导致了NSDate 为nil的情况,请仔细排查自己的代码
我是磊怀 2849765859 请联系我!