2

我有这个字符串...

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

我可以使用这种日期格式的 NSDateFormatter 吗?如果不是,我如何提取时间并将其转换为等效的 12 小时时间?

谢谢!

4

3 回答 3

2

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

于 2011-02-15T04:12:07.360 回答
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"];
于 2010-08-24T21:25:28.427 回答
0

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

于 2017-09-05T21:08:23.427 回答