【问题标题】:NSDate coming null in iOSNSDate 在 iOS 中为空
【发布时间】:2012-06-22 14:10:10
【问题描述】:

我必须从字符串中获取日期。所以我使用下面的代码:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

//Fri Mar 09 15:31:35 CST 2012
[formatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZ yyyy"];
NSDate *date = [formatter dateFromString:[newDict objectForKey:@"eventDate"]];
NSLog(@"aDate is %@",[newDict objectForKey:@"eventDate"]);

eventDate 的格式为 aDate Fri May 18 12:00:37 IST 2012,但日期为空。

我知道这是一个小问题,但我真的很坚持。

【问题讨论】:

  • 我不知道答案,但问题似乎与日期的时区部分有关。 ZZZ 预计会收到类似“Fri May 18 12:00:37 -800 2012”的信息。
  • @PhillipMills 好眼光,ZZZ 指定 RFC 822。我相信小写zzz 是为了这种格式。
  • 显然zzz 依赖于一个叫做“常用标志”的东西,我根本不明白。 :-)
  • stackoverflow.com/a/9086117/571506让我们都开悟吧!
  • @PhillipMills 我尝试通过用 GMT 时间替换时区来转换时区部分,它工作正常。谢谢

标签: objective-c ios5 nsdate nsdatecomponents


【解决方案1】:

您的输入字符串可以用@"EEE MMM d HH:mm:ss VVV yyyy"的格式解析。

【讨论】:

    【解决方案2】:

    尝试在dateFromString: 调用之前添加:

    [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_IN"]];
    

    【讨论】:

    • 如果您不使用 ARC,此代码会泄漏,但如果您仍在使用手动内存管理,则可以在其中添加 autorelease
    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2014-12-10
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多