2

我在使用自定义日期格式化程序NSDateFormatter将字符串转换为日期时遇到问题。这是一个简短的示例,它从今天的日期创建一个字符串,但未能将其转换回NSDate

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"Mdyyyy"];
NSString *example = [dateFormatter stringFromDate:now];    // e.g., 10292013
NSDate *reverse = [dateFormatter dateFromString:example];  // nil?

所以基本上它似乎NSDateFormatter正在创建一个日期字符串,它本身无法NSDate使用与创建字符串相同的格式返回。

使用MMddyyyy日期字符串有效,尽管我无法从文档(方便地仅上升到 iOS 6.0)中看到它为什么重要:

month   M   1..2    09  Month - Use one or two for the numerical month, ....
...
day d   1..2    1   Date - Day of the month

我之所以尝试使用Mdyyyy而不是,MMddyyyy是因为它更接近于NSDateFormatterShortStyle我当前NSLocale( M/d/yy) 的返回值。

也许有人可能在这里有一些见解,因为我做错了什么,或者我对这应该如何工作的理解是错误的。(我知道这里有很多关于 的问题NSDateFormatter,但我没有找到适合我的问题的问题。)

4

1 回答 1

2

Mdyyyy 作为字符串 -> 日期映射不明确。无法判断“1112013”​​是 1 月 11 日还是 11 月 1 日。因此 NSDateFormatter 不允许将它用于字符串 -> 日期。

于 2013-10-29T17:08:19.950 回答