从String发表日期'2011-08-16T19:03:21.000Z'

Eth*_*ick 8 iphone objective-c date-format nsdateformatter ios

我向数据库询问对象的日期.我收回了一个字符串:( 2011-08-16T19:03:21.000Z这是另一个字符串:) 2011-08-12T02:13:16.000Z;

编辑:这是另一个我在2011年8月16日下午12:51进行测试的目的: 2011-08-16T19:51:24.000Z

我想将此日期转换为另一种格式以供显示.这种格式将来可能会改变,所以我不想直接进行字符串操作.最好的办法是将其转换为NSDate,然后再转换为格式正确的字符串.但是,对于我的生活,我不能将这个darn字符串写入NSDate.

- (NSString *)makeDateStringReadable:(NSString *)dateString {
    NSLog(@"The String: %@", dateString);
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss.zzzz"];
    NSDate *theDate = [formatter dateFromString:dateString];
    NSLog(@"The Date: %@", theDate);
    [formatter setDateFormat:@"yyyy-MM-dd"];
    NSString *finalString = [formatter stringFromDate:theDate];
    [formatter release];
    return finalString;
}
Run Code Online (Sandbox Code Playgroud)

传入原始字符串,并将其注销,但"日期:"日志始终显示为null.我假设格式不正确...但我不能让它正确.我也试过用这个作为参考.

我能获得DateFormatter大师的帮助吗?非常感谢!

Hen*_*olm 13

一个问题(但可能不是问题)是这zzzz不是正确的规范000Z.RFC 3339时间戳的结尾不是四字符时区规范,而是小数秒加上文字"Z".所以尝试换zzzzSSS'Z'.

  • 在玩了一些之后(并得到了朋友的帮助),我得到了它:'[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];' 谢谢! (7认同)
  • NSDateFormatter是我在iOS(和Mac)上遇到的最慢的事情之一 - 不要太慢.它们真的很贵.如果你要生产10,000个,请记住这一点.您可以创建一个,然后将其保留用于整个程序执行.(单身). (2认同)