我以NSString格式获取日期" 2016-03-16T00:00:00.000 + 05:30" 我使用以下方法将NSString日期转换为正确的NSDate格式,并返回null。
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 :(得分: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];