2011-08-18 77 views
1

好,我覺得有點啞問這個,但是任何想法,爲什麼這不工作:NSDateFormatter不工作

{ 
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
     [formatter setDateFormat:@"mmmm dd, yyyy"]; 

     NSDate *myDateFromString = [formatter dateFromString:creditDate.text]; 
     NSLog(@"%@", myDateFromString); 
     [self.credit setCertificationDate: myDateFromString]; 
    } 

,則返回null

回答

3

格式和字符串不匹配,因爲「m」是分鐘,「M」是月份。因此,「2012年8月18日」不能被解釋,以「MMMM DD YYYY」相反,你可以在unicode.org

檢查格式我總是設置一個明確的區域:

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
    [dateFormatter setLocale:usLocale]; 
    [usLocale release]; 

只要你不解析月份名稱,如果提供明確的格式字符串,則實際語言環境是否爲en_US無關緊要。

一些更多的提示:

  • 使用硬編碼的字符串進行測試,以排除所提供的日期是錯誤的。
  • 嘗試更簡單的格式器字符串,如沒有時間或月份作爲數字來隔離錯誤的部分。
  • 如果它仍然不起作用,可以使用NSDateFormatter的getObjectValue:forString:range:error:來獲取有關錯誤的更多詳細信息。
+0

對不起,沒有工作: – logixologist

+0

我能有格式錯誤可能會....那給你一個空值 – logixologist

+0

更爲離奇:當我硬代碼的文本日期如下:NSDate的* myDateFromString = [ formatter dateFromString:@「9/1/2013」​​]; NSLog(@「%@」,myDateFromString);我仍然收到null – logixologist