trabajadas sumar suma segundos restar resta minutos mas intervalos horas fechas como acumuladas iphone objective-c nsdate

iphone - sumar - ¿Cómo se puede restar horas de un NSDate?



suma y resta de horas minutos y segundos en excel (7)

Aquí una función que podría ser útil ya que devuelve la fecha -4 h considerando que esto también puede cambiar la fecha y el mes y eventualmente el año. La opción .searchBackward es la parte importante :)

public static func correctSecondComponent(date: Date, calendar: Calendar = Calendar(identifier: Calendar.Identifier.gregorian))->Date { let hour = calendar.component(.hour, from: date) let e = (calendar as NSCalendar).date(byAdding: NSCalendar.Unit.hour, value: -4, to: date, options:.searchBackwards)! return e }

Me gustaría restar 4 horas de una fecha. Leí la cadena de fecha en un objeto NSDate usando el siguiente código:

NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyy-MM-dd''T''HH:mm:ssZ"]; NSDate * mydate = [dateFormatter dateFromString:[dict objectForKey:@"published"]];

¿Que hago después?


Desde iOS 8 hay una dateByAddingUnit más conveniente:

Swift 2.x

//subtract 3 hours let calendar = NSCalendar.autoupdatingCurrentCalendar() newDate = calendar.dateByAddingUnit(.Hour, value: -3, toDate: originalDate, options: [])


En Swift 4:

var baseDate = ... // something let dateMinus4Hours = Calendar.current.date(byAdding: .hour, value: -4, to: baseDate)

No vayas con 24*3600 y esas cosas, eso es un problema.


La función dateFromString devuelve NSDate, no NSString. usted debe cambiar,

NSDate * theDate = [dateFormatter dateFromString: datetemp];


NSCalendar es la API general para cambiar fechas en función de las unidades de tiempo humanas. Para esto, puede usar NSCalendar''s -dateByAddingComponents:toDate:options: con un número negativo de horas.


//in Swift 3 //subtract 3 hours let calendar = NSCalendar.autoupdatingCurrent newDate = calendar.date(byAdding:.hour, value: -3, to: originalDate)