Мы получили проблему в нашем существующем приложении iOS, разработанном с использованием Objective-c.RFC 3339 date formatters - почему дата вывода сдвинута на один день?
выпуск: дата выхода сдвигается на один день назад, только для зоны времени PST.
Мы указали ниже код для преобразования даты в короткий формат.
-(NSString *)getDisplayDateFormat:(NSString *)dateString
{
NSLocale *enUSPOSIXLocale;
NSDateFormatter *inputformatter = [[NSDateFormatter alloc] init];
enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[inputformatter setLocale:enUSPOSIXLocale];
inputformatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
[inputformatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssSSSZZZZ"];
NSDate *date= [inputformatter dateFromString:dateString];
NSDateFormatter *OutPutformatter = [[NSDateFormatter alloc] init];
[OutPutformatter setDateFormat:@"yyyy-MM-dd"];
NSString *dispalyDateString = [OutPutformatter stringFromDate:date];
return dispalyDateString;
}
Input DateString = 2017-01-16T00: 00: 00-06: 00
UTC Формат: дата = 2017-01-16 06:00:00 +0000
DateString выходных = 2017-01-15
Пожалуйста, помогите нам исправить проблему.
Это не так. Ожидается то, что вы видите. И дело не только в PST (западное побережье США). Он покажет 15 января для любого устройства с смещением часового пояса больше -6 (далее на запад). – rmaddy
2017-01-16T00: 00: 00-06: 00 (например, полночь утром 16 января в Чикаго), было 10 часов 15 января в Лос-Анджелесе. Таким образом, ваш вывод имеет смысл. Вопрос в том, какова ваша более широкая задача. Вы говорите, что вам все равно, когда придет что-то, только в тот день, когда он был там? Тогда вы, вероятно, не должны включать временную часть в свои строки даты вообще. Отступив назад, вы должны отредактировать свой вопрос, чтобы описать более широкую задачу дизайна, и мы можем посоветовать, как его решить. – Rob
Благодарим вас за разъяснения, я получаю дату «2017-01-16T00: 00: 00-06: 00» с сервера, необходимо конвертировать в 2017-01-16. Пожалуйста, предложите. – Raj