与stringWithFormat问题

请如何使我的stringWithFormat / initWithFormat显示am / pm而不是24小时,即使用户从pickerviewerselectam / pm? 当用户select时间; 例如4:15 pm,而不是显示4:15 pm作为确认,而是显示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]; } 

使用NSDateFormatter 。 不要紧,服务器值是以24小时的格式给出的,因为你的date格式化string可以适应(即在调用setDateFormat:时代替使用“h”代表am / pm格式,使用“H”代替24格式)。

改为使用格式@"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