【发布时间】:2011-02-06 19:25:24
【问题描述】:
我从解析 XML 文件中得到一个字符串,如下所示:Fri, 09 Apr 2010 00:00:45 +0200 并且相应的模式应该是这个“EEE,dd MMM yyyy HH:mm:ss ZZ”,但我得到(null)。
这是我的代码:
NSString *dateString = @"Fri, 09 Apr 2010 00:00:45 +0200";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"date:%@",date); // result date:(null)
编辑:
这对我有用,我不得不切换到 en-US 语言环境:
NSLocale* usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];
NSDate *date = [dateFormatter dateFromString:dateString];
【问题讨论】:
-
别忘了发布你的 dateFormater 和 usLocale !
-
这是因为您的设备 12/24 设置与区域设置相反。这会导致 Apple 通过将“HH:mm:ss”更改为“hh:mm:ssa”来“帮助”您。使用 en-US 区域设置会禁用此“功能”。 (虽然 en_US_POSIX 更好。)
标签: iphone date nsstring nsdate nsdateformatter