为什么NSDateFormatter在2月29日返回nil

fut*_*te7 1 iphone objective-c nsdateformatter

当我尝试使用格式化程序字符串解析字符串@"02291120"时,NSDateFormatter返回nil

@"MMddHHmm"
Run Code Online (Sandbox Code Playgroud)

但是,2月29日是有效日期(闰年).如何确保解析器返回的结果不是nil?

rob*_*off 7

您没有告诉日期格式化程序使用哪一年.

如果您未在日期格式中包含年份,则默认情况下使用1970.如果您希望默认情况下使用不同的年份,则必须为日期格式化程序指定默认日期.例如,如果您希望它使用当前年份,则可以将默认日期设置为当前日期:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"MMddHHmm";
df.defaultDate = [NSDate date];
NSDate *date = [df dateFromString:@"02291120"];
Run Code Online (Sandbox Code Playgroud)