2011-08-09 65 views
0

我想一個字符串,它的格式爲2011年8月1日到的NSDate字符串轉換爲NSDate的

轉換我用下面的代碼

NSString *dateStr = @"Aug 3, 2011"; 

// Convert string to date object 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"MMMM d, YYYY"]; 
NSDate *date = [dateFormat dateFromString:dateStr]; 

[picker setDate:date animated:YES]; 

但輸出得到的是不是2010年12月26日在日期選擇器中。

我很感謝在這方面提供的任何幫助。 謝謝

+1

「2011年8月3日」和「2011年8月1日」的格式不同。 –

回答

1

關於對伯特蘭·馬龍的回答您的意見,如果你確信你有日期格式化程序的權利,也許問題與您的選擇器?你能檢查調試器中的日期值並確認它是正確的嗎?您的選擇器是自定義子類還是標準日期選擇器?

編輯:

我自己再現這一點後,我有答案。

更換

[dateFormat setDateFormat:@"MMMM d, YYYY"]; 

[dateFormat setDateFormat:@"MMMM d, yyyy"]; 

大寫YYYY表示在ISO年周曆 「年周」。請參閱數據格式指南的文檔 - >例如日期格式化程序。

+0

它是我們一個標準的日期選擇器..是的,我調試時調試在聲明之後NSDate * date = [dateFormat dateFromString:dateStr];日期設置爲2010年12月26日..無法解決它,直到現在..等待一個適當的解決方案。 – alanvabraham

+1

請參閱我編輯的答案以獲得正確的解決方案! – jrturton

0

試試這個,它可以使用

[DATEFORMAT setDateFormat:@ 「MMM d,YYYY」];

0

您的日期未格式化爲「2011年8月1日」。

NSString *dateStr = @"Aug 3, 2011"; 

正確的格式字符串將@"MMM d, YYYY"

雖然@"MMMM d, YYYY"會爲@"August 1, 2011"工作。

+0

抱歉,我在寫第一個問題時犯了錯誤。我已經給字符串作爲「2011年8月3日」,格式爲「MMMM d,YYYY」但我一直得到的結果是2011年12月26日在選擇器 – alanvabraham

1

我想你應該指定:

[dateFormat setDateFormat:@"MMM d, YYYY"]; 

也看一看this document

月 - 使用一個[M]或兩個數值一個月,三個月的縮寫,或四個爲全名,或五個爲狹義名稱。

(「窄名字」有點像這個月的最初,你正在尋找的縮寫)

-1
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];// autorelease  
[formatter setDateFormat:@"MMM d, YYYY hh:mma"];