日期格式不适用于5/1916

时间:2015-05-28 10:21:11

标签: ios objective-c nsdate nsdateformatter

我尝试使用以下代码将两个NSString格式化为NSDate:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/yyyy"];

NSString *dateString = @"5/1916";
NSString *dateString2 = @"6/1916";

NSDate *date = [dateFormatter dateFromString:dateString];
NSDate *date2 = [dateFormatter dateFromString:dateString2];

猜猜:

日期为nil,date2工作正常(isn&#t; t nil)。 知道这是怎么来的吗?

enter image description here

编辑: 对于那些认为它是关于字符串的人来说,下一个屏幕截图有同样的问题。 enter image description here

2 个答案:

答案 0 :(得分:0)

您的代码可以完美地使用以下结果

Printing description of dateString:
05/1916
Printing description of date:
1916-04-30 18:06:40 +0000

但问题是NSDate必须具有day, month , year只需修改代码以便为dateformatter提供正确的日期。

答案 1 :(得分:0)

在大多数语言中,5/1916将不被接受,但05/1916是,因为格式是MM / yyyy而不是M / yyyy。字符串的长度是强制性的。

希望有所帮助, eiran