Konstruowanie NSDate z dzisiejszej daty i ciąg z czasem

Jeśli mam ciąg reprezentujący czas, powiedz „10:45 am” i wykonaj następujące czynności, aby przeanalizować łańcuch:

NSDateFormatter *dateFormat;
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"h:mm a"];
NSLog(@"%@", [dateFormat dateFromString:@"10:45 AM"]);

Otrzymałbym to:

2013-09-09 17: 52: 30.416 Test czasu [49491: a0b] 2000-01-01 15:45:00 +0000

Jak mogę utworzyćNSDate na bieżący dzień w danym czasie? Próbowałem tego

NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"h:mm a"];
NSDate *time = [formatter dateFromString:@"10:45 AM"];
NSDateComponents *timeComponents = [[NSCalendar currentCalendar] components:(NSHourCalendarUnit | NSMinuteCalendarUnit ) fromDate:time];
NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date];
NSDateComponents *newComponents = [[NSDateComponents alloc]init];
newComponents.timeZone = [NSTimeZone systemTimeZone];
[newComponents setDay:[dateComponents year]];
[newComponents setMonth:[dateComponents month]];
[newComponents setYear:[dateComponents year]];
[newComponents setHour:[timeComponents hour]];
[newComponents setMinute:[timeComponents minute]];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *combinedDate = [gregorianCalendar dateFromComponents:newComponents];
NSLog(@"%@", combinedDate);

z rezultatem

2013-09-09 19: 57: 14.506 TimeTest [49712: a0b] 2019-03-06 15:45:00 +0000

Jak mam to zrobić?

questionAnswers(2)

yourAnswerToTheQuestion