ios/objective-c:NSDateFormatter错误

ios/objective-c:NSDateFormatter错误,ios,objective-c,nsdateformatter,Ios,Objective C,Nsdateformatter,下面的代码并不像我希望的那样将字符串转换为日期 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; NSString *starttimestr = feedElement[@"starttime"]; NSLog(@"starttimestr%@",starttimest

下面的代码并不像我希望的那样将字符串转换为日期

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
    NSString *starttimestr = feedElement[@"starttime"];
    NSLog(@"starttimestr%@",starttimestr);//this returns 'starttimestr  NSString *  @"2015-10-20 14:30:00"  0x1765ddc0'
    NSDate *starttime = [dateFormatter dateFromString:starttimestr];
    NSLog(@"starttime%@",starttime);//this returns nil

有人能看到哪里出了问题吗?

您的日期格式必须与字符串的格式匹配才能工作。因此,您可以删除“T”和时区内容,因为它们实际上都不在字符串中。

starttimestr中的日期字符串与dateFormatter中设置的日期格式不匹配,您需要类似YY-MM-dd HH:MM:ss的内容。为什么包含T、小数秒和时区的格式字符串在时间字符串中都不存在的情况下还能工作?太棒了!。它现在返回一个值。但是有4个小时的差异?starttimestr2015-10-20 14:30:00 starttime2015-10-20 18:30:00+0000有什么可以解释的?猜猜看,这可能是你的时区差异。关于如何处理日期/时间,有数百个问题,因为要正确处理日期/时间很难。您需要确保应用程序中的所有时间都存储在GMT中,然后仅在显示时进行本地化。如果您还没有阅读苹果的文档,那么您必须阅读它:格式问题是正确的。使用上面机器猫的格式,我让它工作了