NSDateFormatter格式按年和月排列

时间:2012-01-11 11:48:10

标签: objective-c ios nsdate nsdateformatter

我试图将NSDateFormatter设置为年份,如下所示:

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

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

也许有人可以帮我解决这个问题

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分: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];