我试图将NSDateFormatter设置为年份,如下所示:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"];
NSLog(@"**> %@",[dateFormatter dateFromString:@"2012"]);
[dateFormatter release];
但它打印:**> 2011-12-31 22:00:00 +0000
也许有人可以帮我解决这个问题
答案 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];