为什么我的NSDate Formatter无法正确转换并在设备上返回null?

时间:2010-02-09 15:11:14

标签: iphone objective-c nsdateformatter

我有一个NSDate Formatter,应该从字符串创建一个NSDate,并应该返回它格式化。问题是从String转换为NSDate的结果是错误的,更大的问题是在iPhone OS 3.1.2上它返回null,而在模拟器中它返回错误的日期。

//start formating date
NSMutableString *rawNewsDate = [NSMutableString stringWithString:@"Wed, 3 Feb 2010 14:47:11 CET"];
[rawNewsDate replaceOccurrencesOfString:@" CET" withString:@"" options:0 range:NSMakeRange(0, [rawNewsDate length])];

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEE, d MMM YYYY HH:mm:ss"];
NSDate *date = [dateFormat dateFromString:rawNewsDate]; 
[dateFormat setDateFormat:@"d.M.YYYY | HH:mm"];
NSString *formatedDate = [dateFormat stringFromDate:date];  
NSLog(@"Formated Date %@", formatedDate);
[dateFormat release];

在控制台的模拟器上,运行代码后,从字符串转换的NSDate是2009-12-23 14:47:11 +0200和格式化的一个23.12.2009 | 14:47。

在控制台中的设备上,从字符串转换的NSDate为null,格式化也为null。

结果应该是03.02.2010 | 14时47分。

任何指针? 感谢

1 个答案:

答案 0 :(得分:1)

在格式字符串中,将YYYY更改为yyyy(小写)。看看这是否修复了模拟器结果。

如果设备上仍然出错,是否设置为美国地区?如果没有,请尝试在格式化程序上对en_US执行setLocale。

以下是日期格式模式的参考:
http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns