我正在尝试从字符串中设置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
肯定包含当时的字符串。
答案 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]];