Почему я получаю «2010-01-01 00:00:00 +900» от «2010-12-31 15:00:00 +000»?
-
14-10-2019 - |
Вопрос
У меня есть 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 (скажем, в Токио)?