2013-01-18 65 views
11

我有這個字符串---->孫,二零一二年十二月十六日15點30分22秒+0000轉換日期字符串NSDate的目標C/iOS的

我想將其轉換爲NSDate的。我曾嘗試下面的代碼,但它給我空

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

[df setDateFormat:@"yyyy-MM-dd hh:mm:ss a"]; 

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

date = [df dateFromString: @"Sun, 16 Dec 2012 15:30:22 +0000"]; 

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

我沒有得到這個問題?

任何指導PLZ

+0

1)你不需要'分配/ init''date'使用它之前。你在該行上創建的對象將被泄露(在MRC中)或立即被丟棄(在ARC中)。2)你的日期是否看起來像*「yyyy-MM-dd hh:mm:ss a」會暗示它應該? –

+0

可能重複[如何將字符串轉換爲NSDate在iPhone?](http://stackoverflow.com/questions/6288371/how-to-convert-string-to-nsdate-in-iphone) –

回答

14

格式化程序的dateFormat需要與您提供的字符串格式相匹配。

因此這樣的事情應該工作

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss ZZZ"; 

NSLog(@"%@", [formatter dateFromString:@"Fri, 18 Jan 2013 15:30:22 +0000"]); 

要查找什麼符實際上意味着檢查Unicode Technical Standard #35

4

試試這個代碼

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

    [df setDateFormat:@"EEEE, dd MMM yyyy"]; 

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

    date = [df dateFromString: @"Sun, 16 Dec 2012"]; 

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

希望它可以幫助你..

編輯: -

爲了您的字符串

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

    [df setDateFormat:@"EEEE, dd MMM yyyy HH:mm:ss z"]; 

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

    date = [df dateFromString: @"Sun, 16 Dec 2012 15:30:22 +0000"]; 

    NSLog(@"date: %@", date); 
+0

感謝Prateek現在的工作,但是當我想將這個字符串「Sun,2012年12月16日15:30:22 +0000」轉換爲NSDate時,它再次給我null – AppDeveloper

+0

@AppDeveloper檢查我的編輯部分,代碼也是如此! –

+0

@AppDeveloper它有效嗎? –

3

試試這個得到N從字符串SDATE

- (NSDate*) dateFromString:(NSString*)aStr 
{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]]; 
    //[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss a"]; 
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"]; 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 

    NSLog(@"%@", aStr); 
    NSDate *aDate = [dateFormatter dateFromString:aStr]; 
    [dateFormatter release]; 
    return aDate; 
} 

它適用於我。

+0

你對,錯過了。我的錯。 我已經以正確的格式編輯它 –

相關問題