NSDateFormatter форматировать дату по году и месяцу - PullRequest
0 голосов
/ 11 января 2012

Я пытался установить NSDateFormatter для года, например:

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

Но это печатает: **> 2011-12-31 22:00:00 + 0000

Может быть, кто-то может помочь мне об этом

Ответы [ 2 ]

0 голосов
/ 11 января 2012

Это связано с разницей часового пояса между UTC (GMT) и вашим часовым поясом (вы, вероятно, в GMT + 2). NSDate находится в UTC по умолчанию. Вот почему [дата NSDate] может отличаться от местного времени.

Следующий код должен вывести 1 января 2012 года:

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 голосов
/ 11 января 2012

Надеюсь, вы из +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];
...