2012-01-11 186 views
-2

NSDateFormatter格式日期我试图设置为NSDateFormatter一年,像这样:按年份和月份

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy"]; 
NSLog(@"**> %@",[dateFormatter dateFromString:@"2012"]); 
[dateFormatter release]; 

但它打印:**> 2011-12-31 22:00:00 +0000

也许有人可以帮到我

回答

0

这与UTC(GMT)和时区之间的时区差异做(你GMT + 2可能是)。 NSDate默认为UTC。这就是为什么[NSDate日期]可能偏离当地时间。

下面的代码应输出2012年1月1日:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy zzz"]; 
NSLog(@"**> %@",[dateFormatter dateFromString:@"2012 GMT"]); 
[dateFormatter release]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
[dateFormatter setDateFormat:@"yyyy"]; 
NSLog(@"NSDate : %@",[dateFormatter dateFromString:@"2012"]); 
[dateFormatter release]; 
0

希望你是从+02:00时区。由于NSDate总是在GMT时区给出时间,而不是打印2012-01-01 00:00:00 +0000,它将打印GMT时区中的上述时间值。

编辑:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
[dateFormatter setDateFormat:@"yyyy"]; 
NSLog(@"NSDate : %@",[dateFormatter dateFromString:@"2012"]); 
[dateFormatter release]; 
+0

,但如果我想打印只是2012 – Streetboy 2012-01-11 12:09:54

+0

我已经更新了我的答案.. PL。查 – Ilanchezhian 2012-01-11 12:18:17