Мы знаем, что NSDate - это UTC / GMT.Другими словами, информация о часовом поясе не связана с ним.
Существуют классы высокого уровня, такие как NSCalendar и NSTimeZone и NSDateComponents, которые принимают во внимание часовой пояс.
Исходя из этого, яиспользуя следующий код для расчета разницы в днях между двумя датами.Однако результат, который я получаю, выглядит так, как будто расчеты выполнены без учета времени.Мне интересно, если я делаю что-то не так или это по какой-то причине.
Вот код и данные:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comp = [calendar components:NSDayCalendarUnit fromDate:startDate toDate:stopDate options:0];
NSInteger day = [comp day];
Вывод отладки:
(gdb) po startDate
2011-04-01 03:52:13 +0000
(gdb) po stopDate
2011-04-03 15:52:13 +0000
(gdb) p (int) day
$1 = 2
Часовой пояс - стандартное тихоокеанское время, а приведенные выше даты преобразованы в PST:
startDate = 2011-03-31 8:52:13 -7
stopDate = 2011-04-03 8:52:13 -7
Поэтому я бы ожидал, что между ними будет 4 дня, а не 2. (31-го, 1-го, 2-го и 3-го)
Причина, по которой я думаю, что часы игнорируются, заключается в том, что если добавить часыНа расчеты мы получаем 2 дня и 12 часов.
Я что-то не так делаю или это так работает?
Спасибо, Вэнс