NSDateFormatter不会格式化奇怪的datestring

所以我有一个我收到的datestring,看起来像这样:“2013-03-20T21:13:26-7:00”,我从networking后端收到。 我无法控制后端,只是一个fyi。

我的意愿是将date格式化为这样:9:13 pm at 3/20。

当我做以下

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSDate *date = [dateFormatter dateFromString:@"2013-03-20T21:13:26-7:00"]; 

date为空。

我的第一个想法是,datestring看起来很奇怪,也许我应该删除T和“-7:00”,因为“-7:00”被附加到我收到的每一个date,我不知道是什么那是为了。

即使在string看起来像@“2013-03-20 21:13:26”, date仍为空。

我承认在格式date我不是专业人士,所以如果我能在这个问题上得到一些帮助,那将是很棒的。

提前致谢!

您必须将dateFormat设置为dateFormatter

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssz"]; NSDate *date = [dateFormatter dateFromString:@"2013-03-20T21:13:26-7:00"]; [dateFormatter setDateFormat:@"hh:mma 'at' MM/yy"]; NSString *dateString = [dateFormatter stringFromDate:date]; 

设置dateFormatter的date格式,你的问题在于date的最后部分,其次你可以在dateformatter中设置T,如下所示

  [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssz"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; NSDate *date = [dateFormatter dateFromString:@"2013-03-20T21:13:26-7:00"]; 

设置dateFormat,

 [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];