2010-10-11 51 views
0
NSDateFormatter *aDateFormatter = [[NSDateFormatter alloc] init]; 
[aDateFormatter setLocale:aLocale]; 
[aDateFormatter setDateStyle:NSDateFormatterFullStyle]; 
[aDateFormatter setDateFormat:@"EEE, MMM dd, yyyy"]; 
NSDate *aDateFromString = [aDateFormatter dateFromString:aKey]; 

这里, 的aKey =伦,2010年10月11日
aLocale = fr_CH表示NSDateFormatter返回nil的NSDate对象

aDateFromString即将为nil。我的代码有什么问题?

+0

使用按钮或缩进与4位代码。 – 2010-10-11 20:25:23

+0

现在不可读吗? – Abhinav 2010-10-11 20:42:31

回答

0

玩这个绕了一下,下面这段代码得到一个合法的NSDate:

NSString *df = @"EEE, MMM dd, yyyy"; 
NSString *ds = @"lun., Octobre 11, 2010"; 
NSLocale *aLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_CH"]; 

NSDateFormatter *aDateFormatter = [[NSDateFormatter alloc] init]; 
[aDateFormatter setLocale:aLocale]; 
[aDateFormatter setDateStyle:NSDateFormatterFullStyle]; 
[aDateFormatter setDateFormat:df]; 
NSDate *aDateFromString = [aDateFormatter dateFromString:ds]; 
+0

完美!它为我工作。谢谢你,先生。 – Abhinav 2010-10-11 20:57:24

1

有几件事情来看待:

  • 使用MMMM(4名女),而不是MMM如果字符串包含完整的月份名称在fr_CH表示
  • ,MMMM十月是“OCTOBRE”(“重“不是”呃)
  • 在fr_CH,周一的EEE是“lun”。 (期末)

确保aKey的格式正确并更正了DateFormat字符串。

+0

我认为你是对的。在我的aKey中,我得到了“lun,2010年10月11日”。所以你的意思是说我应该改变它为“伦敦,2010年10月11日”?并在日期格式化程序中添加一个M? – Abhinav 2010-10-11 20:50:12

+0

是的,如果您希望日期格式化程序正确解释它,aKey需要采用该格式。如果可能,请使用日期字符串作为yyyy-MM-dd以避免拼写问题。 – Anna 2010-10-11 20:59:26