2

我对 NSDate 和 NSDateFormatter 有一个问题。

从这个 NSString

NSString *startDate = @"Thu, 19 Apr 2012 13:09:56 +0000";

我会获得一个使用当前语言环境本地化的日期,例如“Thu, 19 Apr 2012 13:09”。我已经详细说明了这段代码,但“endDate”字符串返回 nil(在调试器中获取“无效 CFStringRef”)。

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSDate *dateFromString = [dateFormatter dateFromString:startDate];

[dateFormatter setDateFormat:@"EEE dd MMM yyyy HH:mm"];
[dateFormatter setLocale:[NSLocale currentLocale]];

NSString *endDate = [dateFormatter stringFromDate:dateFromString];

错误在哪里?

亚历克斯。

4

2 回答 2

2

似乎代码在非美国语言环境中执行。我使用非美国语言环境。我也有同样的nil输出。

看来我们需要setLocale:之前setDateFormat:

下面的代码工作正常:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
NSLocale *usLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
于 2012-04-27T13:25:11.063 回答
0

雅它工作正常..尝试autorelease从你的删除dateFormatter,然后再试一次。

我希望这个链接和你的一样

无效的 CFStringRef 问题

试试这个答案,用"ZZ"and not改变你的格式选项"ZZZ"

于 2012-04-27T11:05:38.913 回答