Интересная проблема, которая меня поймала.
Я получаю строки с сервера на устройство. который затем конвертируется в NSDate. Когда устройство было настроено на отображение 24 часов, жизнь была хорошей.
Теперь я тестирую его на устройстве, установленном на 12 часов. все перестало работать. Даты возвращаются как null
Сначала я имел
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"HH:mm"];
self.startTime = [dateFormat dateFromString:(NSString *)self.startTime];
Отлично работает для устройств, показывающих 24 часа, но не 12 часов.
Затем я попробовал
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"HH:mm"];
self.startTime = [dateFormat dateFromString:(NSString *)self.startTime];
Это работает до 12 часов, затем все даты возвращаются как null
Обновление
Я также попытался добавить "a", но это все равно приводит к возврату null
if (startDate == nil)
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"hh:mm a"];
startDate = [dateFormat dateFromString:(NSString *)self.startTime];
}
Обновление 2
Добавление локального, добавление: ss добавление все еще не работает
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
NSLocale *twelveHourLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
dateFormat.locale = twelveHourLocale;
[dateFormat setDateFormat:@"hh:mm a"];
startDate = [dateFormat dateFromString:(NSString *)self.startTime];