obtener hora fechas fecha comparar actual ios nsdate uidatepicker

ios - hora - obtener fecha actual swift 4



NSDate con componente de fecha de uno y componente de tiempo de otro NSDate (4)

En Swift:

let calendar = NSCalendar.currentCalendar() let date1 = NSDate() // PickerDateMode let date2 = NSDate() // PickerHourMode let componentsOne = calendar.components([.Year, .Month, .Day], fromDate: date1) let componentsTwo = calendar.components([.Hour, .Minute], fromDate: date2) let totalComponents = NSDateComponents() totalComponents.year = componentsOne.year totalComponents.month = componentsOne.month totalComponents.day = componentsOne.day totalComponents.hour = componentsTwo.hour totalComponents.minute = componentsTwo.minute let finalDate = calendar.dateFromComponents(totalComponents)

Tengo dos controles UIDatePicker en mi aplicación, uno configurado con UIDatePickerModeDate y uno con UIDatePickerModeTime.

Quiero configurar un objeto NSDate con la fecha de UIDatePicker one y la hora de la segunda ... ¿cómo?

Gracias mark


Supongamos que date1 y date2 son sus dos valores NSDate. date1 contiene sus componentes date y date2 contiene sus componentes time. Así es como los combinarías juntos:

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; // Extract date components into components1 NSDateComponents *components1 = [gregorianCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:date1]; // Extract time components into components2 NSDateComponents *components2 = [gregorianCalendar components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:date2]; // Combine date and time into components3 NSDateComponents *components3 = [[NSDateComponents alloc] init]; [components3 setYear:components1.year]; [components3 setMonth:components1.month]; [components3 setDay:components1.day]; [components3 setHour:components2.hour]; [components3 setMinute:components2.minute]; [components3 setSecond:components2.second]; // Generate a new NSDate from components3. NSDate *combinedDate = [gregorianCalendar dateFromComponents:components3]; // combinedDate contains both your date and time!

Para iOS 8.0 +

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; // Extract date components into components1 NSDateComponents *components1 = [gregorianCalendar components:(NSCalendarUnit)(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date1]; // Extract time components into components2 NSDateComponents *components2 = [gregorianCalendar components:(NSCalendarUnit)(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:date2]; // Combine date and time into components3 NSDateComponents *components3 = [[NSDateComponents alloc] init]; [components3 setYear:components1.year]; [components3 setMonth:components1.month]; [components3 setDay:components1.day]; [components3 setHour:components2.hour]; [components3 setMinute:components2.minute]; [components3 setSecond:components2.second]; // Generate a new NSDate from components3. NSDate * combinedDate = [gregorianCalendar dateFromComponents:components3]; // combinedDate contains both your date and time!


Actualización a Swift 4 y 4.1

func combineDateAndTimeToOneDate() { 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) }

¡Espero eso ayude!


NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; NSDate *date = [NSDate date];//datapicker date NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date]; NSInteger year = [dateComponents year]; NSInteger month = [dateComponents month]; NSInteger day = [dateComponents day]; NSInteger hour = [dateComponents hour]; NSInteger minute = [dateComponents minute]; NSInteger second = [dateComponents second];