2016-03-18 70 views
-2

Iam獲取NSString格式的日期「2016-03-16T00:00:00.000 + 05:30」Iam使用以下方法將NSString日期轉換爲合適的NSDate格式,並返回null。返回null的NSString格式的日期iOS?

NSString *dateString = @"2016-03-16T00:00:00.000+05:30"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ssZZZ"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 

dateFromString = [dateFormatter dateFromString:dateString]; 

//dateFromString returns null. 

請幫助

我有這個代碼

NSString *strDateFor = [polygon valueForKey:@"effective_from"]; 
    NSDateFormatter *dateformate=[[NSDateFormatter alloc]init]; 
    [dateformate setDateFormat:@"yyyy-MM-dd 'T' HH:mm:ss ZZZZ"]; 
    NSDate *date = [dateformate dateFromString:strDateFor]; 
    NSLog(@"date : %@",date); //null 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; 
    [dateFormat setDateFormat:@"dd-MM-yyyy"]; 
    NSString *strDate = [dateFormat stringFromDate:date]; 
    NSLog(@"The strDate is - %@", strDate); //null 

再次空

+0

我應該如何糾正這種??? – Bangalore

+1

比較字符串和格式。他們不匹配。 – gnasher729

回答

2

首先,線路更新:

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

不作任何因爲你不是使用您在此創建的NSDate實例。只是把它留下。

其次,總是設置日期格式化程序的locale如果您解析日期字符串像這樣。默認情況下,NSDateFormatter使用用戶當前的語言環境,這可能是任何事情,所以你不能依賴它。您可能需要en_US_POSIX區域設置,因爲它將保證不會更改。

第三,您的日期格式字符串是錯誤的,因爲您沒有指定小數秒(.SSS)。

這工作:

NSString *dateString = @"2016-03-16T00:00:00.000+05:30"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSZZZ"]; 
NSDate *dateFromString = [dateFormatter dateFromString:dateString]; 
+0

是的,它的工作。如果我只想要日期部分,我應該怎麼做? – Bangalore