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

时间:2011-08-16 19:48:38

标签: iphone objective-c ios nsdateformatter date-format

我向数据库询问对象的日期。我回复了一个字符串: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;
}

传入原始字符串并注销,但“日期:”日志始终显示为null。我假设格式不正确......但我无法让它变得正确。我也尝试使用this作为参考。

我能获得DateFormatter专家的帮助吗?非常感谢你!

1 个答案:

答案 0 :(得分:13)

一个问题(但可能不是 问题)是zzzz不是000Z的正确规范。 RFC 3339时间戳的结尾不是四字符时区规范,而是小数秒加上文字" Z"。因此,请尝试将zzzz更改为SSS'Z'