NSDateFormatter - getObjectValue:forString:range:error:返回错误的日期

时间:2011-05-29 05:06:36

标签: iphone

我正在尝试使用getObjectValue:forString:range:error:从NSString转换为NSDate。该函数返回成功且没有错误,但返回的日期不正确。

具体来说,我将@"1989-12-31T00:00:00+00:00"传递给下面的函数,返回的日期为1970-01-01 00:00:000 +0000。有什么想法吗?

+ (NSDate *) convertStringToDate:(NSString *) dateString
{
    NSDate* date = nil;
    NSError* error = nil;
    NSRange range = NSMakeRange(0, [dateString length]);

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    BOOL success = [dateFormatter getObjectValue:&date forString:dateString range:&range error:&error];
    [dateFormatter release];

    return success ? date : nil;
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:locale];
[dateFormatter setLocale:usLocale];
[usLocale release];
[dateFormatter setDateFormat:@"EEE, dd MMMM yyyy HH:mm:ss Z"];
NSDate *date = [dateFormatter dateFromString:dateString];

注意:

  • 从源代码获取NSLocale init的语言环境,您将获得此日期,例如RSS提要或类似内容。
  • setDateFormate:调整您的来源格式。