我正在尝试将字符串转换为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"
但这也不起作用。)
甚至可以在不进行字符串操作和删除最终“:”的情况下执行此操作吗?
答案 0 :(得分: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;
}
答案 1 :(得分:1)
看起来您使用的是ISO 8601格式的日期。如果从Web服务获取这些内容,格式将根据格式更改。看看这个:
http://boredzo.org/iso8601parser/
这将根据格式转换日期,即使格式稍有变化也是如此。
答案 2 :(得分:-1)
像
这样的东西[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
Z必须是单引号。