【问题标题】:NSDate returning nil in iOS [duplicate]NSDate在iOS中返回nil [重复]
【发布时间】:2015-09-05 05:30:51
【问题描述】:

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

【问题讨论】:

  • 这已经被问了数千次了。为什么您觉得有必要创建一个新问题?
  • 因为看不到 dateFormat、locale 等方面的明显错误,我认为它与众不同。

标签: ios objective-c date nsdate nsdateformatter


【解决方案1】:

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

【讨论】:

    【解决方案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的值

    【讨论】:

    • 这很好用。但是self.time 似乎肯定被设置了。很奇怪……
    • 检查self.time的值,代码没有错误。只需调试变量的值。
    【解决方案3】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 2015-07-09
      • 1970-01-01
      相关资源
      最近更新 更多