NSDateFormatter dateFromString错误日期为12/31

时间:2013-11-14 20:35:15

标签: ios nsdateformatter

2014年12月31日我的错误日期。示例代码:

NSDateFormatter *dateF =[[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateF setLocale:enUSPOSIXLocale];
[dateF setDateFormat:@"MM/DD/yyyy"];

NSDate *date = [dateF dateFromString:@"12/31/2014"];
NSLog(@"Date for locale %@: %@",
      [[dateF locale] localeIdentifier], [dateF stringFromDate:date]);
date = [dateF dateFromString:@"01/01/2013"];
NSLog(@"Date for locale %@: %@",
      [[dateF locale] localeIdentifier], [dateF stringFromDate:date]);

返回的结果是:

Date for locale en_US_POSIX: 12/335/2014
Date for locale en_US_POSIX: 01/01/2013

这引出了许多问题。 1)我如何获得正确的约会? 2)一个月怎么可以有335天?

感谢所有人,

1 个答案:

答案 0 :(得分:0)

“D”是一年中的某一天,你想要一天中的“d”日。

你想:

[dateF setDateFormat:@"MM/dd/yyyy"];

请参阅:ICU Formatting Dates and Times网页。

另一个常见错误是使用“Y”,即“年”周而不是“y”年。