2017-08-02 65 views
-1

我不明白爲什麼我的dateFormatter返回null。代碼非常簡單,但我在這裏沒有看到任何錯誤。我也嘗試使用setDateFormat,但沒有任何結果。代碼有什麼問題?Objective-C中的日期格式化程序返回null

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
mikey.hireDate = [dateFormatter dateFromString:@"Aug 02, 2010"]; 

回答

1

將日期格式化程序的語言環境設置爲EN_US_POSIX。這樣,設備的區域不會改變格式器。

NSLocale *locale = [[NSLocale alloc] 
       initWithLocaleIdentifier:@"EN_US_POSIX"]; 
[dateFormatter setLocale:locale]; 
+0

謝謝。它有幫助。那麼,Xcode是使用我的設備的當前位置來更改日期的格式或什麼?你能否更詳細地解釋爲什麼我們應該使用locale初始化日期格式化程序? – Tigran

+0

沒錯。日期格式化程序默認使用實際設備的區域設置。例如,如果用戶使用中文電話,「Aug」將是一個未定義的短月,因爲它是英文的。 – the4kman

+0

好的。非常感謝你! – Tigran

0

您的代碼在我的機器上工作;這就是說,如果你想從用戶輸入中解析日期字符串,NSDataDetector通常比NSDateFormatter更好。