NSDateFormatter日期转换不正确

时间:2015-06-24 06:11:45

标签: ios iphone nsdate nsdateformatter

我正在使用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]);

请帮我弄清楚问题。

由于

3 个答案:

答案 0 :(得分:3)

这可能会帮助你。添加以下代码。

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

答案 1 :(得分:3)

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

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

它会正常工作。

答案 2 :(得分:1)

添加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]);