NSDateFormatter在某些字符串上失败但不是全部

时间:2015-09-12 02:34:52

标签: ios objective-c nsdateformatter

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd";
NSDate *date = [dateFormatter dateFromString:@"1989-04-16"];
NSLog(@"%@", date);

我想解析日期字符串@" 1989-04-16"。它失败了。但其他字符串也可以,比如@" 1989-04-17"或@" 1989-04-15"。为什么?非常感谢你。

我很抱歉用" yyyy-dd-MM"写了一个formateString,实际上" yyyy-MM-dd"。它仍然没有工作。我在中国。时区必须是GMT +8。所以我将NSTimeZone添加到dateFormatter并且它可以工作,就像@Amin Negm-Awad所说的那样!非常感谢你。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd";
dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:3600*8];
NSDate *date = [dateFormatter dateFromString:@"1989-04-16"];
NSLog(@"%@", date);

1 个答案:

答案 0 :(得分:0)

你的格式错了:

你说yyyy-dd-MM(年/日/月)
但你给它一个字符串是yyyy-MM-dd(1989-04-17)

=>所以将格式化程序的格式更改为'yyyy-MM-dd'