сохранение часового пояса в NSDateFormatter - PullRequest
0 голосов
/ 26 сентября 2011

Мне нужно установить строку формата для DateFormatter, чтобы преобразовать NSString в NSDate.

Строка в формате: 2011-01-31 12:45:00 +0200 (y-m-d ч: м: с часовой пояс)

Я использую формат: @"yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z", но часовой пояс конвертируется в +0000 и час корректируется, поэтому строка выглядит так: 2011-01-31 12:45:00 +0200 преобразуется в: 2011-01-31 10:45:00 + 0000

Код здесь:

- (NSDate *) dateForString: (NSString *)dateString
{
    NSDateFormatter *dateFormatter;
    NSLocale *enUSPOSIXLocale;
    NSDate  *date;

    dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];

    [dateFormatter setLocale:enUSPOSIXLocale];
    [dateFormatter setDateFormat:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z"];
    // [dateFormatter  setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    date = [dateFormatter dateFromString:dateString];
    return date;
}

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Это абсолютно ожидаемое поведение при использовании NSDate - NSDate представляет момент времени, поэтому в вашем случае 2 даты / времени эквивалентны.

Просто убедитесь, что вы отображаете дату, используя установленный вами dateFormatterчасовой пояс на устройстве форматирования даты и способ его отображения.

0 голосов
/ 26 сентября 2011

Посмотрите на setTimeZone: в http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

Здесь также можно найти дополнительную информацию: NSDate - конвертировать дату в GMT (может быть, дубликат?)

...