2010-10-11 69 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