NSString到NSDate返回错误的日期

Tim*_*aev 1 objective-c nsdate nsstring nsdateformatter ios

我尝试将我转换NSStringNSDate对象,但NSDateFormatter返回一个奇怪的值.

这是代码:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm"]; 
NSDate *date = [dateFormat dateFromString:@"2012-08-15 00:00"];
[dateFormat release];
Run Code Online (Sandbox Code Playgroud)

date价值是2012-08-14 21:00 +0000.NSString价值和NSDate价值之间有3个小时的差异.我想我错过了什么,但我不知道是什么.

Ada*_*dam 6

这是我用的:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"]; 

NSDate *date = [dateFormat dateFromString:@"2012-08-15 00:00:00 +0000"];
NSLog(@"\n\n  DATE: %@ \n\n\n", date);
Run Code Online (Sandbox Code Playgroud)

+0000是时区,所以一定要使用你的时区+0400.

编辑:如果您无法更改字符串,则可以使用此代码执行此操作:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm"]; 
[dateFormat setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate *date = [dateFormat dateFromString:@"2012-08-15 00:00"];
Run Code Online (Sandbox Code Playgroud)