我有一个UTC字符串,我想转换为NSDate。不知怎的,我得到了30分钟的错误
字符串是 的 2012-04-10T00:00:00 + 05:30
转换日期是 2012-04-09 19:00:00 +0000
应该在哪里 2012-04-09 18:30:00 +0000我正在使用此功能将字符串转换为日期
- (NSDate *)parseRFC3339Date{
NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
[rfc3339TimestampFormatterWithTimeZone setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *theDate = nil;
NSError *error = nil;
if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:self range:nil error:&error]) {
NSLog(@"Date '%@' could not be parsed: %@", self, error);
}
[rfc3339TimestampFormatterWithTimeZone release];
return theDate;
}
答案 0 :(得分:2)
如果你要创建一个覆盖整个字符串的NSRange
并将其地址传递给-getObjectValue:forString:range:error:
,那么你会看到输出它会很短。解析在冒号处停止,因为格式字符串中的“Z”仅匹配“-0800”(无冒号)之类的内容。如果你要指定4个Z,'ZZZZ',它将匹配“GMT-08:00”之类的东西。这允许结肠,但需要“GMT”。如果您确定日期字符串的格式,可以尝试插入“GMT”。
答案 1 :(得分:0)
我遇到了 ISOdateFormatter 这里http://boredzo.org/iso8601unparser/,效果很好。比修改传入的日期字符串更好地为它提供资金。