我在使用 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];
问题在哪里?
亚历克斯。
最佳答案
代码似乎是在非美国语言环境中执行的。我使用非美国语言环境。我也有相同的 nil
输出。
看来我们需要在setDateFormat:
之前setLocale:
。
下面的代码可以正常工作:
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"];
关于objective-c - NSDate 和 NSDateFormatter 返回无效的 CFStrinfRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10348226/