J'ai nsdate * jour1 code> et
nsdate * jour2 code>. Comment puis-je créer un
nsdate * jour3 code> en copiant uniquement l'année / mois / jour de la journée1 et heure / minute / seconde du jour2? P>
5 Réponses :
Vous devez créer un NSCalendar, puis obtenir les composants de la date des première et seconde dates, puis obtenir la date à l'aide des nouveaux composants de la date du NSCalendar.
Utilisez les méthodes NSCalendar P>
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit |NSSecondCalendarUnit;
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; NSDateComponents *comps = [[NSCalendar currentCalendar] components:unitFlags fromDate:day1]; NSDate *day3 = [[NSCalendar currentCalendar] dateFromComponents:comps]; unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; comps = [[NSCalendar currentCalendar] components:unitFlags fromDate:day2]; day3 = [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:day3 options:0]; Sources: NSDateComponents Class Reference NSCalendar Class Reference
Pour éviter les problèmes d'été, je vous recommande de définir le CurrentCalendar à UTC Timezone.
Ce n'est pas aussi compact que Darvids0n, mais cela fonctionne.
NSDateFormatter *tempFormatter = [[[NSDateFormatter alloc]init]autorelease]; [tempFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSString* message = [NSString stringWithFormat:@"%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second]; NSDate *day3 = [tempFormatter dateFromString:message];
Pour les enregistrements, voici une approche plus générale
NSDate *day3 = [day2 dateByTakingComponents: NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate: day1];
func combineDateAndTimeToOneDateForAPI() {
let datefrmter = DateFormatter()
datefrmter.dateFormat = "dd/MM/yyyy"
let dateFromString = datefrmter.date(from: lblDate.text!)
datefrmter.dateFormat = "h:mm a"
let timeFromString = datefrmter.date(from: lblTime.text!)
let calendar = NSCalendar.current
let componentsOne = calendar.dateComponents([.year,.month,.day], from: dateFromString!)
let componentsTwo = calendar.dateComponents([.hour,.minute,.second,.nanosecond], from: timeFromString!)
let totalComponents = NSDateComponents()
totalComponents.year = componentsOne.year!
totalComponents.month = componentsOne.month!
totalComponents.day = componentsOne.day!
totalComponents.hour = componentsTwo.hour!
totalComponents.minute = componentsTwo.minute!
totalComponents.second = componentsTwo.second!
totalComponents.nanosecond = componentsTwo.nanosecond!
let finalDate = calendar.date(from: totalComponents as DateComponents)
print(finalDate)
}