2016-03-18 34 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