1

我正在尝试将字符串转换为 NSDate,但格式始终为nil

我要转换的日期是:

2012-08-16T16:20:52.619000+00:00

我正在尝试的日期格式是:

@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZ"

如果我将日期更改为:

@"2012-08-16T16:20:52.619000+0000" // removing the : from +00:00

这是一种享受,但我会

(我也试过

@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZ:ZZ" 
@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZ':'ZZ" 

但这也不起作用)。

甚至可以在不进行字符串操作并删除最后的“:”的情况下做到这一点吗?

4

3 回答 3

4

我对此进行了最终搜索,发现您必须使用

getObjectValue

而不是

dateFromString

万一其他人遇到这个问题,我发布了将此类字符串转换为 NSDate 的方法

+ (NSDate *)dateFromString:(NSString *)dateString {
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"];

    NSDate *theDate = nil;
    NSError *error = nil;
    [dateFormat getObjectValue:&theDate forString:dateString range:nil error:&error];
    [dateFormat release];
    return theDate;
}
于 2012-08-17T18:37:14.443 回答
1

看起来您正在使用 ISO 8601 格式的日期。如果您从 Web 服务获取这些,则格式会根据格式而变化。看一下这个:

http://boredzo.org/iso8601parser/

这将根据格式转换日期,即使格式略有变化。

于 2012-08-17T18:46:30.083 回答
-1

像这样的东西怎么样

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];

Z 必须用单引号括起来。

于 2012-08-17T18:39:37.293 回答