NSDateFormatter没有返回正确的日期

时间:2014-01-22 20:02:09

标签: ios objective-c nsdateformatter

所有

我有NSDateFormatter,似乎没有返回正确的月份。以下是我的代码:

- (NSDate *)stringToDate
{
    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    [df setDateFormat:@"YYYY-MM-DD"];

    return [df dateFromString:self];
}

+ (NSString *)dateToString:(NSDate *)date
{
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"MMMM DD, YYYY"];

    return [df stringFromDate:date];
}

+ (NSString *)formatLongDate:(NSString *)string
{
    NSDate *date = [string stringToDate];

    return [NSString dateToString:date];
}

当我通过[NSString formatLongDate:@"2013-10-09"]时,结果是 2013年1月9日而不是 2013年10月9日。我迷失了为什么会发生这种情况。有没有人有想法?

1 个答案:

答案 0 :(得分:6)

我认为问题是DD是“一年中的一天”而不是“一天中的某一天” - 而YYYY是“一年”而不仅仅是“一年”。 (周年基本上很奇怪,如果可能的话,最好忽略它们。)

请尝试使用“yyyy-MM-dd”和“MMMM dd,yyyy”的格式。在格式字符串中包含绝对精确非常重要,包括套管。如有疑问,请检查!请按照Data Formatting Guide页面上的链接(所用的确切Unicode技术标准版本取决于您使用的iOS版本)了解详细信息。