iOS 字符串转时间,超出日期月份自动+1问题

143 阅读1分钟

1、背景:将字符串1998-02-31 转成 NSDate时,调用如下方法,得到的结果是 date:1998-03-02

  • (NSDate *)dateWithString:(NSString *)dateString format:(NSString *)format {    

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

NSTimeZone *localTimeZone = [NSTimeZone localTimeZone];  

 [formatter setDateFormat:format];    

[formatter setTimeZone:localTimeZone];    

[formatter setCalendar:[NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian]];    

return [formatter dateFromString:dateString];

}

2、因为这个日期其实是不存在的,如果想要返回date:nil,加上如下代码即可

 [formatter setLenient:false];