我可以使用NSDateFormatter将此日期字符串转换为NSDate吗?

时间:2010-08-24 21:05:41

标签: iphone ipad ios nsdate nsdateformatter

我有这个字符串......

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

我想从中提取时间部分(即16:00)并将其转换为12小时的等效时间(即04:00 pm)。我正在尝试使用NSDateFormatter来实现这一目标,但它无法正常工作......

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

我可以将NSDateFormatter与此日期格式一起使用吗?如果没有,我如何提取时间并将其转换为12小时的等效时间?

谢谢!

3 个答案:

答案 0 :(得分:2)

问题与解析冒号有关。我问了同样的问题,解决方案在这里:How to parse a date string into an NSDate object in iOS?

答案 1 :(得分:1)

我认为您应该可以执行以下操作。


    // 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];

更新:修复了dateFormatter字符串格式。我有下面的一行,但Z似乎没必要。时区总是搞砸我。 : - /

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

答案 2 :(得分:0)

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