NSDate来自字符串错误的转换

时间:2014-02-15 14:30:27

标签: ios objective-c date nsdate nsdateformatter

我有这个:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
[dateFormatter setDateFormat:@"yyyy-MM-DD"];
NSDate *offsetDay = [dateFormatter dateFromString:entry.date];

String entry.date是2014-02-16,结果offsetDay是2014-01-16。 为什么会发生这种情况?

感谢。

2 个答案:

答案 0 :(得分:4)

尝试一下:

[dateFormatter setDateFormat:@"yyyy-MM-dd"];

如果我没记错的话,DD是一年中的某一天,而不是您想要的那一天。您可以找到完整的NSDateFormatter格式表here

答案 1 :(得分:0)

尝试此代码编辑。

 NSString *entry=@"2014-01-16";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *offsetDay = [dateFormatter dateFromString:entry];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];

NSLog(@"date--%@",[dateFormatter stringFromDate:offsetDay]);