Неверная дата из строки возвращается из форматера! Зачем? - PullRequest
1 голос
/ 26 сентября 2011

У меня проблема с NSDateFormatter I, который конвертирует дату из средства выбора в одном представлении

`NSDateFormatter *output = [[NSDateFormatter alloc] init];
[output setDateStyle:NSDateFormatterMediumStyle];
[output setDateStyle:NSDateFormatterShortStyle];
[output setDateFormat:@"yyyy-MM-dd hh:mm:ss"];    
NSString *StringToSend = [output stringFromDate:datePicker.date];

`, а затем отправляет строку в другое перо

, где преобразовывает ее обратно с этим кодом

`NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateStyle:NSDateFormatterMediumStyle];
[inputFormatter setDateStyle:NSDateFormatterShortStyle];
[inputFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *formatterDate = [inputFormatter dateFromString:StringFromOtherView];
NSLog(@"%@", formatterDate);`

и возвращается неправильная дата отправки 2011-09-26 01:02:49 получение 2011-09-25 22:02:49 + 0000

что не так?

Ответы [ 3 ]

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

Потому что:

  1. Когда вы NSLog() и NSDate, он всегда регистрирует его в GMT
  2. Вы живете в часовом поясе, который составляет три часавпереди по Гринвичу.Таким образом, для вас 1:02 - это 22:02 (предыдущего дня) по Гринвичу.
0 голосов
/ 16 мая 2012
 + (NSDate*) dateFromString:(NSString*)aStr
 {

  if (aStr.length == 10) {
    aStr = [aStr stringByAppendingFormat:@" 00:00:00"];
 }
   NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
   [dateFormatter setDateFormat:@"MM-dd-yyyy HH:mm:ss"];
   dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    NSLog(@"strdate %@", aStr);
    NSDate   *aDate = [dateFormatter dateFromString:aStr];
    NSLog(@"date = %@",aDate);
    [dateFormatter release];
    return aDate;

}

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

Включить часовой пояс в строку формата даты.

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