Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NSDate在iOS中返回零_Ios_Objective C_Date_Nsdate_Nsdateformatter - Fatal编程技术网

NSDate在iOS中返回零

NSDate在iOS中返回零,ios,objective-c,date,nsdate,nsdateformatter,Ios,Objective C,Date,Nsdate,Nsdateformatter,我正在尝试从字符串设置NSDate。字符串的格式如下所示(RFC 2822): 我使用的代码是: NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US_POSIX"]; dateFormatter.dateFormat = @"EEE, dd MMM yyyy hh:mm:

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

我使用的代码是:

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
总是返回一个nil
self.time
肯定包含时间字符串。

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

我认为你的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的值

如果我这样做,效果绝对不错

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

这已经被问了数千次了。为什么您觉得有必要创建一个新问题?因为我认为这是不寻常的,因为无法看到dateFormat、locale等的明显错误。这非常有效。但是
self.time
似乎已经确定。非常奇怪…检查你的self.time值,代码中没有错误。只需调试变量的值。
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"];