NSDate在iOS中返回nil

时间:2015-06-19 09:29:21

标签: ios objective-c date nsdate nsdateformatter

我正在尝试从字符串中设置NSDate。字符串的格式如下所示(RFC 2822):

Tue, 09 Jun 2015 06:09:38 +0000

我使用的代码是:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US_POSIX"];
dateFormatter.dateFormat = @"EEE, dd MMM yyyy hh:mm:ss Z";
NSDate *dateString = [dateFormatter dateFromString:self.time];

dateString总是返回零。 self.time肯定包含当时的字符串。

3 个答案:

答案 0 :(得分:2)

我认为你的self.time要么是零,要么是其他格式。要检查代码,请手动输入字符串并查看结果

NSString *str = @"Tue, 09 Jun 2015 06:09:38 +0000";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US_POSIX"];
dateFormatter.dateFormat = @"EEE, dd MMM yyyy hh:mm:ss Z";
NSDate *dateString = [dateFormatter dateFromString:str];
NSLog(@"date : %@",dateString);

我添加了一个样本,它给了我正确的结果。尝试一次调试self.time的值

答案 1 :(得分:1)

如果我这样做,这绝对没问题

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US_POSIX"];
    dateFormatter.dateFormat = @"EEE, dd MMM yyyy hh:mm:ss Z";
    NSDate *dateString = [dateFormatter dateFromString:@"Tue, 09 Jun 2015 06:09:38 +0000"];

输出为:2015-06-09 06:09:38 +0000

答案 2 :(得分:0)

您可能需要设置时区。     [dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];