0

我有这个NSString

2010-05-29T16:31:49.000Z

我想用这种方法将它转换为 NSDate:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDate *date = nil;
[dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss.SSSZZZ"];
date = [dateFormatter dateFromString:dateSting];

当我运行它时,日期等于 Nil,知道为什么会这样吗?

它只发生在 iPad 上,而在 iPhone 上它完美运行......

4

2 回答 2

4

来自http://www.w3.org/TR/NOTE-datetime的注释。感谢borrrden注意到这一点。

时间以 UTC(协调世界时)表示,带有一个特殊的 UTC 指示符(“Z”)。

NSString *inputString = @"2010-05-29T16:31:49.000Z";

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSz"];

NSDate *date = [dateFormatter dateFromString:inputString];
于 2013-06-09T13:26:42.847 回答
0

这已经被问过很多次了。您的格式化程序对您的输入字符串无效:

yyyy-MM-dd'T'HH:mm:ss.SSSX

不确定您使用的是哪一种时区模式,因此可能XXXXXXX应该在最后使用。

请参阅http://www.unicode.org/reports/tr35/tr35-dates.html。请注意,Z时区模式不允许这样做ZZZ

于 2013-06-09T12:36:32.657 回答