NSDateFormatter 不正确的日期转换

NSDateFormatter incorrect date conversion

我正在使用 NSDateFormatter 将 NSString 转换为 NSDate。

例如,如果我的 NSString 值为 2015 年 6 月 24 日,那么它将转换为 2015-06-23 18:30:00 +0000,这是不正确的。

应该是“24”而不是“23”。

我正在使用下面的代码进行转换。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd,yyyy"];
NSLog(@"%@",[formatter dateFromString:strDate]);

请帮我解决问题。

谢谢

添加行 NSTimeZone :

   NSString *dateString = @"Jun 24,2015";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd,yyyy "];
dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
NSLog(@"%@",[dateFormatter dateFromString:dateString]);

这可能会对您有所帮助。添加以下代码。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

您的 NSDateFormatter 将值作为本地日期格式(IST,GMT +5:30),然后将其转换为 GMT。它将您的值设为 00:00 am, 24 june 2015 并将其转换为根据 GMT 18:30 2015 年 6 月 23 日意味着实际时间前 5 小时 30 分钟,因此只需添加

[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

它会正常工作。