通过Cocoa的NSDate解析不支持的日期格式

在Cocoa框架中,如何将@“2008-12-29T00:27:42-08:00”解析为NSDate对象? 标准-dateWithString:不喜欢它。


你可以使用NSDateFormatter来解析日期:

    NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
    date = [dateFormatter dateFromString:dateStr];

unicode日期格式模式定义了您可以与setDateFormat:方法一起使用的格式字符串。

请注意,如果您的目标是10.4,那么您需要调用: [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 。 不需要iphone或者豹,因为这种模式是默认的。


如果您只需处理ISO 8601格式(该字符串是一个示例),则可以尝试使用ISO 8601解析器和解析器。


实际上,您需要设置时区,日历和区域设置。 如果您未设置区域设置,则用户启用了AM / PM时间,格式化程序将添加AM / PM标记! 如果您不设置时区,它将使用当前时区,但会将其标记为“Z”(“祖鲁”或GMT)。 如果你没有设定日历,日本皇室日历的用户将有自从当前皇帝提升以来的数年,而不是从耶稣基督出生以来的年数。 一定要在我提到的所有场景中进行测试!

    NSDateFormatter * f = [[NSDateFormatter alloc] init];
    [f setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    f.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
    f.calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
    f.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];
    NSString * str = [f stringFromDate:someDate];
    NSDate * date = [f dateFromString:dateStr];
链接地址: http://www.djcxy.com/p/5981.html

上一篇: Parsing unsupported date formats in via Cocoa's NSDate

下一篇: Unsupported record version SSLv2Hello using CloseableHttpClient