【发布时间】:2013-01-09 20:12:29
【问题描述】:
可能重复:
Converting mutliple date format into a single format in iPhone
我正在尝试解析 RSS 并从 RSS 的内容部分中提取日期的 NSString,并将其转换为 NSDate。这是我目前所拥有的:
RSS 内容总是将时间列为时间:日期/时间到结束时间。我首先扫描 RSS 中的每个项目,以了解“时间:”和“到”部分之间的内容。然后我设置了一个 NSDateFormatter。这就是问题所在。有时它被列为 2013 年 9 月 6 日星期四下午 1:00,但在其他时候,使用的格式是 2013 年 9 月 6 日星期四下午 1 点。所以......我需要解决的问题是设置一些东西,以便无论日期的格式如何,它都能够返回一些东西,因为现在使用“EEE MMM dd, yyyy h:mma”会忽略其中的实例饲料只是说下午 1 点。
NSMutableArray *substrings = [NSMutableArray new];
NSScanner *scanner = [NSScanner scannerWithString:articleImage];
[scanner scanUpToString:@"When: " intoString:nil]; // Scan all characters before #
NSString *substring = nil;
[scanner scanString:@"When: " intoString:nil]; // Scan the # character
if([scanner scanUpToString:@" to" intoString:&substring]) {
// If the space immediately followed the #, this will be skipped
//[substrings addObject:substring];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"EEE MMM dd, yyyy h:mma"];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:substring];
self.thetruedate = dateFromString;
[dateFormatter release];
NSLog(@"%@",dateFromString);
[substrings release];
}
【问题讨论】:
-
@ACB 我不明白您链接到的那个问题中给出的答案。在解析 RSS 中的所有其他内容时如何调用该方法?
-
不要在问题中使用日期格式化程序,而是需要将其用作
[self dateStringFromString:substring destinationFormat:@"dd-MM-yyyy"]);在这里您可以定义您想要的任何目标格式或将其转换为 NSDate 并使用它。该方法定义已经存在于接受的答案中。您可能必须在其中包含可能的日期格式。 -
我根本没有关注你@ACB 发布一些东西作为答案怎么样,这样我就可以比 cmets 允许的更好地看到它。
-
检查我的答案。我使用了相同的方法,但修改为返回 NSDate 而不是 NSString。
标签: ios nsdate nsdateformatter nsscanner