Проблемы с stringWithFormat

Вопрос:

Как я могу заставить my stringWithFormat/initWithFormat отображать am/pm вместо 24 часов, даже если пользователи выбирают am/pm из pickerviewer? Когда пользователь выбирает время; например, 4:15 вечера, вместо того, чтобы отображать 4:15 вечера в качестве подтверждения, вместо этого отображает 16:15. Я хочу это как 4:15 вечера. ПОЖАЛУЙСТА ПОМОГИ!!

-(IBAction)datePickerValueChanged:(id)sender
{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"h:mm:ss a"];
NSString *strDate = [dateFormatter stringFromDate:self.pick.date];

dateArray = [strDate componentsSeparatedByString:@":"];

NSDate *current = [NSDate date];
NSString *currentTime = [dateFormatter stringFromDate:current];
NSArray *currArray = [currentTime componentsSeparatedByString:@":"];

curr = [currArray[0] intValue]*60 + [currArray[1] intValue];
min = [currArray[0] intValue]*60 + [currArray[1] intValue] + 30;
next = [[dateArray objectAtIndex:0] intValue]*60 +[[dateArray objectAtIndex:1] intValue];

…. Здесь отображаются значения:

             NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *strDate = [dateFormatter stringFromDate:[NSDate date]];

time = [[NSString alloc]initWithFormat:@"%@T%@:%@:00",strDate, [dateArray objectAtIndex:0], [dateArray objectAtIndex:1]];
NSString *msg = [[NSString alloc] initWithFormat:@"%@ %@ %@ %@ ?", NSLocalizedString(@"do_ticket", nil), self.category.description,NSLocalizedString(@"at", nil),[[NSString alloc]initWithFormat:@"%@:%@", [dateArray objectAtIndex:0], [dateArray objectAtIndex:1]]];
alert_tick = [[UIAlertView alloc] initWithTitle:nil
message:msg
delegate:self
cancelButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"Yes", nil), NSLocalizedString(@"No", nil), nil];
[alert_tick show];
}

Ответ №1

Используйте NSDateFormatter. Не имеет значения, что значения сервера даны в формате 24h, потому что ваша строка форматирования даты может вместить это (т. setDateFormat: Вместо использования “h” в течение нескольких часов при вызове setDateFormat: который представляет формат am/pm, используйте “H” в течение 24 часов формат).

Ответ №2

Вместо этого используйте формат @"hh:mm a".

Пример:

NSDate *today = [NSDate dateWithTimeIntervalSinceNow:0];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];
NSDate *formattedDate = [formatter stringFromDate:today];
NSLog(@"date : %@", formattedDate);

Вывод:

date : 09:58 AM

Оцените статью
TechArks.Ru
Добавить комментарий