Am I using the correct format pattern for parsing a date?

I have problem using the NSDateFormatter to parse a date string. I have implemented the method method below as an NSDate category. The input is the following date string Thu, 22 Dec 2011 16:03:39 +0100 and using the following pattern for parsing EEE, dd MMM yyyy HH:mm:ss ZZZ

The problem is that the method returns nil

+(NSDate*) dateFromString:(NSString*)dateString pattern:(NSString*)pattern
{
    NSDateFormatter *dateParser = [[NSDateFormatter alloc] init];
    [dateParser setDateFormat:pattern];

    NSDate *parsedDate = [dateParser dateFromString:dateString];

return parsedDate;
}

I have looked on Stackoverflow and elsewhere on the Internet, but not found a solution to this problem.


NSDateFormatter is quite smart about region settings like 12/24 hour display, month and weekday names, etc. If you initialize a date formatter it always uses the current locale, you can set the locale manually, though. You can use the en_US_POSIX locale identifier to get a date formatter back that doesn't respect locale settings and always uses the same behavior.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

This is handy (and required, actually) if you need to parse date strings returned from a server for example.

If you want to display date strings in your app, you should never use the -setDateFormat: method directly, btw. Use +dateFormatFromTemplate:options:locale: method to get the correct date format.

In some languages the month is written before the day, ...

    NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:@"dd MMMM yyyy" options:0 locale:[NSLocale currentLocale]];
    [dateFormatter setDateFormat:dateFormat];
链接地址: http://www.djcxy.com/p/35182.html

上一篇: 使用Dijkstra算法的负权重

下一篇: 我是否使用正确的格式来解析日期?