Почему я получаю «2010-01-01 00:00:00 +900» от «2010-12-31 15:00:00 +000»?

StackOverflow https://stackoverflow.com/questions/4570188

Вопрос

У меня есть NSDATE, он будет показан, как показано ниже, если я использовал NSLog(@"%@", date.description);

2010-12-31 15:00:00 +0000

это будет показано, как если бы я использовал NSLog(@"%@", [date descriptionWithLocale:[[NSLocale currentLocale] localeIdentifier]]);

Суббота, 1 января 2011 г., 12:00:00 в Японии Стандартное время

Но это будет показано, как ниже, если я использовал NSLog(@"%@", [date formattedDateString]);

2010-01-01 00:00:00 +0900

Где я могу ошибиться?

- (NSString *)formattedDateString {
    return [self formattedStringUsingFormat:@"YYYY-MM-dd HH:mm:ss ZZZ"];
}

- (NSString *)formattedStringUsingFormat:(NSString *)dateFormat {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:dateFormat];
    NSString *ret = [formatter stringFromDate:self];
    [formatter release];
    return ret;
}
Это было полезно?

Решение

Я получил то, что мне нужно, как ниже:

-(nsstring *) formattedDatestring {
return [self formattedStringusingFormat:@"yyyy-mm-dd HH: MM: SS Zzz"];
}

Другие советы

У вас есть подкласс NSDATE, верно? Я предполагаю, что вы сделали какую -то ошибку где -то еще в коде переопределения, возможно, при настройке компонентов времени даты (так сказать), так что строка описания или ее исходные данные не обновлялись правильно.

РЕДАКТИРОВАТЬ: О, вы работаете, отлично. Пару секунд слишком поздно. :) Ваше здоровье!

Оба 2010-01-01 00:00:00 +900 а также 2010-12-31 15:00:00 +000 укажите на то же время.

Редактировать:
Оба 2011-01-01 00:00:00 +900 а также 2010-12-31 15:00:00 +000 укажите на то же время.

Вы случайно жили в GMT+9 (скажем, в Токио)?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top