我可以使用NSDateFormatter将此datestring转换为NSDate吗?

我有这个string…

2010-08-24T16:00:00-05:00 

我想从中提取时间部分(即16:00),并将其转换为相当于12小时的时间(即下午4:00)。 我试图使用NSDateFormatter来完成这个,但它不工作…

 NSDateFormatter* dateformatter = [[NSDateFormatter alloc] init]; [dateformatter setDateFormat:@"hh:mm a"]; NSDate *date1 = [dateformatter dateFromString:[listOfTimes objectAtIndex:0]]; [dateformatter release]; 

我可以使用这种date格式的NSDateFormatter? 如果没有,我怎样才能提取时间,并将其转换为相当于12小时的时间?

谢谢!

问题与parsing冒号有关。 我问同样的问题,解决scheme是在这里: 如何parsingdatestring到iOS中的NSDate对象?

我认为你应该能够做到以下几点。

// create the date formatter object NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; NSDate* date = [formatter dateFromString:dateString]; // set up the new date format [formatter setDateFormat:@"hh:mm:ss"]; NSString *twelveHourTime = [formatter stringFromDate:date]; [formatter release];
// create the date formatter object NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; NSDate* date = [formatter dateFromString:dateString]; // set up the new date format [formatter setDateFormat:@"hh:mm:ss"]; NSString *twelveHourTime = [formatter stringFromDate:date]; [formatter release]; 

更新:修正了dateFormatterstring格式。 我有下面的行,但Z似乎是没有必要的。 时区总是把我搞砸了。 : – /

  [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

这个答案需要更新。 从iOS 10开始,系统提供了NSISO8601DateFormatter可用于这种特殊的格式。