UIDatePicker и NSDateFormatter возвращают неверную дату - PullRequest
0 голосов
/ 07 октября 2010

Я уже попробовал решения из нескольких постов, но не повезло.Проблема в том, что я сталкиваюсь с часовыми поясами.И на устройстве, и на симуляторе UIDatePicker и NSDateFormatter возвращают неверные даты, добавляя или вычитая разницу от GMT 0, от выбранной даты (в соответствии с текущим часовым поясом, установленным на устройстве или Mac).

У меня уже естьпопытался установить язык и часовой пояс, но ничего не получалось.Любая идея приветствуется!Спасибо.

(Пример кода не опубликован, потому что оба инициализируются без установки каких-либо свойств прямо сейчас.)

ОБНОВЛЕНИЕ 1:

Здесьэто фрагмент кода:

 datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, frame.size.height - 216.0, frame.size.width, 216.0)];

    [self addSubview:datePicker];

    ....


    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

    [formatter setDateFormat:@"EEE, MMM d, y h:mma"];

    NSString *dateString = [formatter stringFromDate:datePicker.date];
    [formatter release];

Ответы [ 2 ]

14 голосов
/ 12 октября 2010

Нашли решение, разницу часовых поясов нужно добавить следующим образом.

- (NSDate *)dateToGMT:(NSDate *)sourceDate {
    NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
    NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
    NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:destinationGMTOffset sinceDate:sourceDate] autorelease];
    return destinationDate;
}
0 голосов
/ 07 октября 2010

Вы сказали, что установили часовой пояс, но не сказали, где.Вам необходимо установить свойства timeZone вашего UIDatePicker и NSDateFormatter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...