解析格式为@"MMM dd ''YY"的NSDate

Parse NSDate with format @"MMM dd ''YY"

我有一个日期字符串,如下所示:2015 年 3 月 13 日

我找不到正确的方法来解析它。我尝试了以下方法:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMM dd ''YY"];
//[df setDateFormat:@"MMM dd 'YY"];
//[df setDateFormat:@"MMM dd YY"];
NSDate *date = [df dateFromString:label.text];

有人知道如何使用 setDateFormat 吗? 谢谢^^

YY 用于基于周的日历年,用于某些非公历。您通常应该改用 yy。见 unicode reference of valid date pattern.

并且您应该将区域设置设置为 en_US_POSIX,以确保日期被解析为英语日期。例如,在德语语言环境中,您的转换将失败,因为今天 Mar 13 '15März 13 '15.

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMM dd ''yy"];
[df setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];

您使用了错误的年份样式,您需要使用小写的 y。

        [df setDateFormat:@"MMM d ''yy"];

大写 Y 被记录为 "Year (in "一年中的第几周“基于日历)。”并提到 "May not always be the same value as calendar year"。看: http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns