【发布时间】:2014-03-31 18:04:49
【问题描述】:
给定以下代码:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSLog(@"Date from String: %@", [formatter dateFromString:@"2013-09-08T00:36:40"]);
日志产生:Date from String: (null)
对于来自同一来源的其他字符串,它可以工作,但我不明白为什么在这种情况下会失败。
有人可以启发我吗?
更新:我已经更新代码如下,还是失败:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:locale];
NSDate *date = nil;
NSError *error = nil;
[formatter getObjectValue:&date
forString:@"2013-09-08T00:36:40"
range:NULL
error:&error];
NSLog(@"Date from String: %@", date);
NSLog(@"Error: %@", error);
输出: 2014-03-31 15:27:01.697 无标题 [30859:507] 来自字符串的日期:(空) 2014-03-31 15:27:01.710 无标题 [30859:507] 错误:错误域 = NSCocoaErrorDomain 代码 = 2048 “值“2013-09-08T00:36:40”无效。”用户信息=0x7f89d8e04cd0 {NSInvalidValue=2013-09-08T00:36:40}
更新 2:经过一番玩弄后,我发现我的时区是它失败的原因(我不明白为什么,但它只在我的时区下失败)
以下代码失败:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:locale];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Santiago"]];
NSDate *date = nil;
NSError *error = nil;
[formatter getObjectValue:&date
forString:@"2013-09-08T00:36:40"
range:NULL
error:&error];
NSLog(@"Date from String: %@", date);
NSLog(@"Error: %@", error);
有什么解决办法吗?
【问题讨论】:
-
我无法重现您的问题,但我已在您更新后通过结束投票撤回。
-
那么,第二种情况记录了什么?
-
我也无法重现您的问题。我认为你应该考虑@MartinR 链接。
-
@pawan:他已经尝试过了(见更新的问题)。它没有帮助。
标签: objective-c cocoa foundation