Básicamente, como dice el título. Me pregunto cómo podría agregar 1 día a un NSDate
.
Entonces si fuera:
21st February 2011
Se convertiría en:
22nd February 2011
O si fuera:
31st December 2011
Se convertiría en:
1st January 2012.
objective-c
date
cocoa-touch
nsdate
Andrés
fuente
fuente
Respuestas:
Swift 5.0:
C objetivo :
Esto debería explicarse por sí mismo.
fuente
dateByAddingComponents
llamada aNSCalendarOptions(rawValue: 0)
Desde iOS 8 puedes usar
NSCalendar.dateByAddingUnit
Ejemplo en Swift 1.x:
Swift 2.0:
Swift 3.0:
fuente
date.add(.days, 1)
? * va y construye una extensiónextension Date { func adding(_ component: Calendar.Component, _ value: Int) -> Date? { return Calendar.current.date(byAdding: component, value: value, to: self) } }
useDate().adding(.day, 1) // "Jun 6, 2019 at 5:35 PM"
Actualizado para Swift 5
C objetivo
fuente
iOS 8+, OSX 10.9+, Objective-C
fuente
Una implementación funcional de Swift 3+ basada en la respuesta de alto mantenimiento y el comentario de vikingosegundo . Esta extensión de fecha también tiene opciones adicionales para cambiar año, mes y hora:
El uso para agregar solo un día según lo solicitado por OP sería:
fuente
let foo = Date().add([.calendar: 1, .yearForWeekOfYear: 3]
si estuviera agregando la solución alternativa a mi respuesta . Gracias por su sugerencia, @vikingosegundo!Swift 4.0 (igual que Swift 3.0 en esta maravillosa respuesta, solo dejándolo claro para los novatos como yo)
fuente
Use la siguiente función y use el parámetro de días para obtener la fecha daysAhead / daysBehind simplemente pase el parámetro como positivo para una fecha futura o negativo para fechas anteriores:
fuente
En rápido
fuente
¡Es trabajo!
fuente
La implementación muy simple de Swift 3.0 sería:
fuente
fuente
Swift 4.0
Uso
Nota: Si no sabe por qué las líneas de código terminan con un signo de exclamación, busque "Swift Optionals" en Google.
fuente
Puede usar el método de NSDate
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
dondeseconds
estaría60 * 60 * 24 = 86400
fuente
En Swift 2.1.1 y xcode 7.1 OSX 10.10.5, puede agregar cualquier número de días hacia adelante y hacia atrás utilizando la función
llamada a la función para incrementar la fecha actual en 9 días
llamada a la función para disminuir la fecha actual en 80 días
fuente
Aquí hay un método de propósito general que le permite sumar / restar cualquier tipo de unidad (Año / Mes / Día / Hora / Segundo, etc.) en la fecha especificada.
Usando Swift 2.2
fuente
Ok, pensé que esto iba a funcionar para mí. Sin embargo, si lo usa para agregar un día al 31 de marzo de 2013, devolverá una fecha que solo tiene 23 horas agregadas. Es muy posible que tenga 24, pero usarlo en los cálculos tiene solo 23:00 horas agregadas.
Del mismo modo, si avanzas hasta el 28 de octubre de 2013, el código agrega 25 horas, lo que da como resultado una fecha y hora de 2013-10-28 01:00:00.
Para agregar un día, estaba haciendo lo que estaba arriba, agregando:
Complicado, principalmente debido al horario de verano.
fuente
60*60*24 + 1
de los segundos bisiestos. las fechas deben cubrir todo esto, y es por eso que el manejo de la fecha del cacao es realmente genialfuente
En Swift puede hacer una extensión para agregar el método en NSDate
puedes usar esto como
fuente
Actualización para Swift 4:
fuente
para swift 2.2:
¡Espero que esto ayude a alguien!
fuente
Swift 4, si todo lo que realmente necesita es un turno de 24 horas (60 * 60 * 24 segundos) y no "1 día calendario"
Futuro:
let dayAhead = Date(timeIntervalSinceNow: TimeInterval(86400.0))
Pasado:
let dayAgo = Date(timeIntervalSinceNow: TimeInterval(-86400.0))
fuente
actualización para swift 5
fuente
fuente
Yo tuve el mismo problema; use una extensión para NSDate:
fuente
Swift 2.0
fuente
En swift 4 o swift 5, puede usar como abajo:
salida:
fuente
Extensión de cadena: Convertir String_Date> Fecha
Extensión de fecha: Convertir fecha> Cadena
Extensión de fecha: Obtener +/- Fecha
Uso:
referencia: de múltiples preguntas
¿Cómo agrego 1 día a un NSDate?
¿Función matemática para convertir positivo int a negativo y negativo a positivo?
Convertir NSString a NSDate (y viceversa)
fuente
Use el siguiente código:
Como
ahora está en desuso.
fuente