Использование NSDate сложно для меня.Я знаю, что это представляет конкретный момент времени, не привязанный к конкретному часовому поясу или локали.Я также много читал в документах по NSDateFormatter, NSCalendar, NSDateComponents, NSlocale и NSTimeZone.
Я пытаюсь выполнять вычисления на основе двух конкретных тихоокеанских часовых поясов.Например, я хочу иметь возможность подсчитывать количество дней от даты A до даты B. Я не хочу «взламывать» его, анализируя строки, поскольку я хочу, чтобы такие вещи, как DST, также рассчитывались.
Кто-нибудь может порекомендовать способ сделать это?
Редактировать: Найденное решение:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSTimeZone *zone = [NSTimeZone timeZoneWithName:@"PST"];
[calendar setTimeZone:zone];
NSDateComponents *comp = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date];
date = [calendar dateFromComponents:comp];
[calendar release];
Это приводит к дате, локализованной по тихоокеанскому времени.Я знаю, что это вызывает проблемы в разных локалях, но мое приложение уникально, и это оправдано.
Затем я могу сравнить даты, используя деление на 86400, как было опубликовано.
Хотя, похоже,например, излишнее количество - много дополнительной работы - может быть, есть более короткий способ получить дату с определенным часовым поясом?