2012-01-24 31 views
2

我的應用程序是一個JSON代碼,它涉及字符串類型的日期。 (如「2011-10-01」)。 我想知道如何將它轉換爲NSDate? 它需要以不同的時間格式顯示,如「2011年10月1日」。Objective-C字符串(yyyy-mm-dd)到NSDate

ex。此代碼不起作用:

NSString *date1 = @"2010-11-12"; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MMMM-dd"]; 
    NSDate *date2 = [dateFormat dateFromString:date1]; 
    NSString *strdate = [dateFormat stringFromDate:date2]; 
+0

你能在「不工作」詳細點嗎?如果問題只是「strdate」以與原始格式相同的格式結束,那是因爲您使用的格式化程序相同。如果您希望'strdate'與'date1'不同,請使用另一種格式的格式。 – Caleb

回答

15

由於拖輪在his blog post on the subject寫道:

的Objective-C和iOS SDK提供一個類來幫助格式化日期 (編組和解組),這個類是NSDateFormatter。沒有 的驚喜,NSDateFormatter使用Unicode Date Format 模式。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 
NSDate *date = [dateFormatter dateFromString:publicationDate ]; 
[dateFormatter release]; 

其中publicationDate在這種情況下是一個NSString。

+0

謝謝,它現在有效。 – user973067

+0

謝謝偉大的作品。 ARC不需要發行版。只是爲了幫助像我這樣的未來新秀。 –

+0

做過任何一個通知,或者僅僅是我,這個代碼將日期遞減1。 –

2

使用NSDateFormatter。適當的方法是dateFromString:。看看文檔:)

1

你可以試試這個

NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease]; 

[df setDateFormat:@"dd MM yyyy"];  

NSString *TodayString = [df stringFromDate:[NSDate date]]; 

NSDate *SomeDate=[NSDate date]; 

NSString *TargetDateString = [df stringFromDate:SomeDate]; 

NSLog(@"date:%@",TargetDateString);