ios - NSDateFormatter:stringFromDate 和 dateFromString 不可逆?

标签 ios nsdateformatter

我在使用带有 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 作为日期字符串是有效的,尽管我无法从 documentation 中看到(方便地仅适用于 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 的问题,但我没有找到适合我的问题的问题。)

最佳答案

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

关于ios - NSDateFormatter:stringFromDate 和 dateFromString 不可逆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664432/

相关文章:

ios - 用户取消 ios9 后重新启用 GameCenter

ios - NSDateFormatter 在 stringFromDate 中总是 NIL !? (iOS 8.0)

ios - 苹果和 Stripe : Merchant id/apple pay certificate could not seen in xcode

ios - 获取Facebook用户好友列表?

objective-c - 在这种情况下如何实现 UINavigationController?

ios - asset imageURL 作为字符串传递给另一个类

ios - 将日期时间转换为仅时间

iphone - 在 objective-c 中, "2011-05-10T14:30:00 0000"的正确日期格式是什么?

swift - 在 Swift 中将字符串转换为日期

ios - NSDate格式在模拟器上正确,在设备上错误