2013-04-27 56 views
-1

我的代碼中提取年份值時,遇到了空如下:試圖從一個日期

NSString *dateString = @"1339007317"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy"]; 
NSDate *date = [dateFormatter dateFromString:dateString]; 
NSString *year = [dateFormatter stringFromDate:date]; 
NSLog(@"%@",year);//null 

如何解決呢?感謝名單。

回答

1

這是因爲你正在使用unix時間戳和你可以轉換unix時間戳到年或任何日期格式爲:

//Posted Date Format 
NSString *dateStr = @"1339007317"; 
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[dateStr doubleValue]]; 
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]; 

NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
[dateFormatter1 setDateFormat:@"yyyy"]; //Here you can set any date format Ex:@"dd MMM, yyyy hh:mm a" [email protected]"dd/MM/yyyyy" according to your requirement 
[dateFormatter1 setLocale:locale]; 
[dateFormatter1 setTimeZone:[NSTimeZone systemTimeZone]]; 

dateStr = [dateFormatter1 stringFromDate: date]; 

希望它可以幫助你。

+0

無需設置時區。它將默認爲當前時區。另外,爲什麼將locale設置爲'en-US'(除了 - 它應該是'en_US')? – rmaddy 2013-04-27 04:13:34

0

您需要兩種日期格式。首先應該匹配你想轉換爲NSDate的字符串格式。第二種格式需要表示您想要的格式。使用2nd將NSDate轉換爲新字符串。

另外,爲什麼你創建一個日期對象,然後立即用新的替換它?

更改此:

NSDate *date = [[NSDate alloc] init]; 
date = [dateFormatter dateFromString:dateString]; 

到:

NSDate *date = [dateFormatter dateFromString:dateString]; 

你的代碼需要是這樣的:

NSString *dateString = @"1339007317"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"???"]; // format that matches the dateString 
NSDate *date = [dateFormatter dateFromString:dateString]; 
[dateFormatter setDateFormat:@"yyyy"]; // the desired new format 
NSString *year = [dateFormatter stringFromDate:date]; 
NSLog(@"%@",year); 
+0

嗨,Thanx,但我已經嘗試自動分配值的日期沒有分配和不起作用,你的第一個建議如何,你能說明一下嗎? – Malloc 2013-04-27 00:16:52

+1

什麼日期格式是你的字符串「1339007317」?這不只是一年。 – rmaddy 2013-04-27 00:21:25

相關問題