【问题标题】:NSDate dateFromString adds multiple datesNSDate dateFromString 添加多个日期
【发布时间】:2013-06-25 18:05:30
【问题描述】:

我真的对 NSDate 和 NSDateFormatter 感到困惑。我正在尝试从 twitter REST api 1.1 解析日期。我的 DateFormat 似乎是错误的,但我几乎 100% 确定它是正确的。执行 dateFromString 后我得到一个空值

这是我的代码

- (void)InitTwitterToMatchingArray
{
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    [dateFormatter1 setDateFormat:@"EEE MMM dd HH:mm:ss '+0000' yyyy"];
    for (int i = 0; i < [twitterParser1 getAmountOfTweets]; i++) {
        AktuelltMatching *amObject = [AktuelltMatching alloc];
        amObject.ID = i;
        amObject.type = @"twitter";
        NSString *dateString1 = [twitterParser1 getDateForIndex:i];
        NSLog(@"date BEFORE parse : %@", dateString1);
        amObject.date = [dateFormatter1 dateFromString:dateString1];
        [AktuelltMatchingArray addObject:amObject];
        NSLog(@"date AFTER parse %@", amObject.date);
    }
}

这是我的日志

VasaSvahnFirstPrototype[481:907] date BEFORE parse : Fri Apr 26 22:44:06 +0000 2013
2013-06-25 20:03:56.505 VasaSvahnFirstPrototype[481:907] date AFTER parse (null)
2013-06-25 20:03:56.506 VasaSvahnFirstPrototype[481:907] date BEFORE parse : Fri Apr 26 22:43:48 +0000 2013
2013-06-25 20:03:56.507 VasaSvahnFirstPrototype[481:907] date AFTER parse (null)
2013-06-25 20:03:56.508 VasaSvahnFirstPrototype[481:907] date BEFORE parse : Wed Apr 10 13:51:06 +0000 2013
2013-06-25 20:03:56.509 VasaSvahnFirstPrototype[481:907] date AFTER parse (null)
2013-06-25 20:03:56.509 VasaSvahnFirstPrototype[481:907] date BEFORE parse : Fri Mar 22 14:51:45 +0000 2013
2013-06-25 20:03:56.510 VasaSvahnFirstPrototype[481:907] date AFTER parse (null)
2013-06-25 20:03:56.513 

我在这里做错了什么?

【问题讨论】:

  • 这与Xcode无关。
  • @H2CO3 请为我的问题提供一个有用的答案。
  • @userXXX “有帮助”?一个“回答”?没有。
  • NSDateFormatter dateFromString 是出了名的挑剔。当你在模式中包含星期几时,它尤其有问题。你可以试试setLenient:YES,或者从输入中去掉星期几。
  • @HotLicks 仍然为零。伙计,这太令人沮丧了,我已经尝试了所有可能的 DateFormatter 字符串,但我仍然得到 nil。

标签: nsdate nsdateformatter


【解决方案1】:

尝试用此替换您的日期格式...

[dateFormatter1 setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];

【讨论】:

    【解决方案2】:

    尝试以下格式:仅使用“E”而不是“EEE”。

    [dateFormatter1 setDateFormat:@"E MMM dd HH:mm:ss '+0000' yyyy"];

    并查看以下链接,它可能会对您有所帮助:

    http://www.cocoawithlove.com/2009/05/simple-methods-for-date-formatting-and.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多