Tengo una NSDate y una duración. Necesito conseguir el tiempo después de la duración

:
La fecha es «2010-02-24 12:30:00 -1000»
la duración es de 3600 segundos

Necesito conseguir «2010-02-24 13:30:00 -1000»

Pensé dateWithTimeIntervalSinceReferenceDate:, haría el truco pero ahora veo que esto le da un offset de fecha de 1 de enero de 2001 GMT.

Hay otra función de C que tengo que usar

OriginalEl autor user278859 | 2010-02-24

5 Comentarios

  1. 32

    Como DyingCactus de los estados, usted puede utilizar el addTimeInterval método de NSDate, pero dependiendo de la versión del sistema operativo es la voluntad de crear una advertencia del compilador, ya que está en desuso en el 10,6 como de 2009-08-17.

    El actual método recomendado es el uso de dateByAddingTimeInterval en NSDate:

    NSDate *newDate = [oldDate dateByAddingTimeInterval:3600];

    Tenga en cuenta que si usted está apuntando a 10.5 o anterior, la respuesta original de trabajo.

    Gracias a todos los que respondieron. No he leído la documentación lo suficientemente bien como en este.

    OriginalEl autor Chip Coons

  2. 4

    Desea que el método de la clase dateWithTimeInterval:sinceDate: que lleva la fecha de inicio y el intervalo de NSDate docs

    No puedo encontrar dateWithTimeInterval:sinceDate, pero ahora que se me hizo mirar de nuevo veo initWithTimeInterval:sinceDate:. Que hizo el truco. Gracias.
    dateWithTimeInterval:sinceDate es un método de clase, en lugar de un método de instancia, que devuelve el resultado como un autoreleased NSDate. Te acostumbras a las convenciones de nomenclatura con el tiempo.
    OK, ya veo por qué no veo dateWithTimeIntervalSinceDate. Su enlace es para el Mac OSX Biblioteca de Referencia. No está disponible para el iPhone. Pero como otros han señalado, hay varias otras maneras de hacerlo que están disponibles en el iPhone.
    Con sus etiquetas mencionar Cacao en lugar de Cocoa-touch, y que no haya nada sobre el iPhone, no es de extrañar que las respuestas se basan en el Escritorio SDK. He corregido las etiquetas para usted.

    OriginalEl autor Mark

  3. 3

    Puede utilizar el addTimeInterval método de instancia de NSDate:

    NSDate *newDate = [oldDate addTimeInterval:3600];

    Edit: Como Chip Coons señala correctamente, este método ha quedado obsoleta. Por favor utilice uno de los otros métodos en su lugar.

    OriginalEl autor

  4. 1

    Para aquellos que buscan una rápida 3.x versión:

    let newDate = Date.init(timeInterval: 2600, since: oldDate)

    OriginalEl autor dannrob

  5. 0

    Lugar de utilizar el obsoleto addTimeInterval método, usted puede utilizar el nuevo dateByAddingTimeInterval método de instancia de NSDate.

    NSDate *newDate = [oldDate dateByAddingTimeInterval:2500];

    OriginalEl autor David

Dejar respuesta

Please enter your comment!
Please enter your name here