NSDateFormatter проблема поведения - PullRequest
1 голос
/ 16 марта 2011

У меня проблема с использованием NSDateFormatter в программировании iPhone.Ниже приведен фрагмент моего кода.

NSString *inputDate = @"2011-03-14";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]

Результат, который я получаю,

2011-03-13 16:00:00 + 0000

который является GMT-эквивалентом 2011-03-14 00:00:00.(Мой часовой пояс GMT +08: 00)

Почему я получаю это?Как получить 2011-03-14 00:00:00 в результате?

Спасибо.

~ Ян

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

Вы можете установить часовой пояс, используя

[formatter setTimeZone:...]

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

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"..."];
[formatter setLocale:locale];
.
0 голосов
/ 16 марта 2011

Вы можете попытаться добавить часовой пояс к исходной строке

NSString *inputDate = @"2011-03-14+0800";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-ddZZZ"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]
0 голосов
/ 16 марта 2011

Просьба взглянуть на это

NSDateFormatter возвращает неожиданные результаты

Это то, что Apple рекомендует

...