使用NSDateFormatter从数组中获取日期

时间:2011-11-09 14:39:54

标签: objective-c

我正在阅读一个字符串文件。每个字符串看起来像:

!AIVDO,1,1,,B,11b4N?HPs0KLrBDIStg; q?w22< 06,0 * 5A,21 / 10/2011 12:01:13 PM

到目前为止,我所做的是:

        NSArray *arrayFromString = [theString componentsSeparatedByString:@","];
        NSString *dateString = [tempArrayFromAISString objectAtIndex:7];
//            dateString = @"21/10/2011 12:01:13 PM";

        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

        [dateFormat setDateFormat:@"d/M/yyyy h:mm:ss a"];
        NSDate *date = [dateFormat dateFromString:dateString];

这将返回NSDate(null)。

字符串设置正常,因为当我用NSLog输出它时看起来不错。

日期格式化程序是正常的,因为如果我取消注释注释掉的行并自己设置日期字符串就可以了。

关于为什么数组中的字符串不起作用的任何想法?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

更改为

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm:ss a"];

答案 1 :(得分:0)

您的示例包含拼写错误。 arrayFromStringtempArrayFromAISString

这对我有用

NSString *theString = @"!AIVDO,1,1,,B,11b4N?HPs0KLrBDIStg;q?w22<06,0*5A,21/10/2011 12:01:13 PM";
NSArray *arrayFromString = [theString componentsSeparatedByString:@","];
NSString *dateString = [arrayFromString objectAtIndex:7];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

[dateFormat setDateFormat:@"d/M/yyyy h:mm:ss a"];
NSDate *date = [dateFormat dateFromString:dateString];
NSLog(@"%@", date);

答案 2 :(得分:0)

最后有一个换行符,因为我正在读取一个文件。我修好了:

dateString = [dateString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

这摆脱了行尾字符。