2011-02-23 47 views
11

我試圖把其格式爲「11年2月22日」一個NSString的日期並將其轉換爲這種格式:2011-02-22NSDateFormatter和YYYY-MM-DD

這是我的代碼:

NSDate *dateTemp = [[NSDate alloc] init]; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd"]; 
dateTemp = [dateFormat dateFromString:newInvoice.date]; 
newInvoice.date = [dateFormat stringFromDate:dateTemp]; 

newInvoice.date以等於「2/22/11」的NSString開始。 dateTemp結束NIL。 newInvoice.date也以NIL結尾。

我不能爲我的生活找出原因。

回答

25

由於日期格式化程序不正確,您正面臨此問題。假設您的newInvoice.date變量存儲「11:02:23」您的dateFormatter應該是@「yy:MM:dd」,並且如果您的newInvoice.date變量店「11年2月22日」那麼你dateFormatter應該是@「MM/DD/YY」

NSDate *dateTemp = [[NSDate alloc] init]; 
NSDateFormatter *dateFormat1 = [[NSDateFormatter alloc] init]; 
NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc] init]; 

[dateFormat1 setDateFormat:@"MM/dd/yy"]; 
[dateFormat2 setDateFormat:@"yyyy-MM-dd"]; 

dateTemp = [dateFormat1 dateFromString:newInvoice.date]; 
newInvoice.date = [dateFormat2 stringFromDate:dateTemp]; 

格式都應該根據自己的需求來得到正確的結果

+2

即,需要2個格式化程序:一個用於輸入,一個用於輸出。 – Wevah 2011-02-23 05:51:57

1

這應該做工精細。我已經設置日期樣式。您可以將NSDateFormatterShortStyle更改爲其他內容。同時檢查你的newInvoice.date格式。

NSDate *dateTemp = [[NSDate alloc] init]; 

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 

[dateFormat setDateStyle: NSDateFormatterShortStyle]; 

dateTemp = [dateFormat dateFromString: newInvoice.date]; 

[dateFormat setDateFormat:@"yyyy-MM-dd"]; 

newInvoice.date = [dateFormat stringFromDate:dateTemp];