NSDateFormatter dateFromString результаты не имеют смысла для меня - PullRequest
1 голос
/ 19 апреля 2011

Следующий код:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd";
NSDate *tempDate = [dF2 dateFromString:@"2011-07-10"];
DebugLog(@"Temp Date %@", tempDate);

Результатом будет следующий вывод:

Temp Date 2011-07-10 05:00:00 + 0000

Надеюсьне понимаю, откуда приходит 05:00:00?Я использую этот код в центральном часовом поясе, который равен -5 по Гринвичу, и это единственное соединение, которое я могу вспомнить о времени, установленном для даты.Я ожидал 00: 00: 00.

Вклад оценен.

1 Ответ

3 голосов
/ 19 апреля 2011

Когда вы создали NSDate 07-10-2011, NSDataFormatter по умолчанию использует текущий часовой пояс. Который в вашем примере это GMT-5.

Помните также, что отладчик будет отображать NSDate в UTC / GMT + 0;

Если вы хотите создать UTC полночь:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd";
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate *tempDate = [dateFormatter dateFromString:@"2011-07-10"];
NSLog(@"Temp Date %@", tempDate);
...