2010-10-01 21 views

Respuesta

132

El método más fácil Soy consciente es:

if([firstDate timeIntervalSinceDate:secondDate] > 0) { 

Las otras respuestas cubren comparan :, quería añadir algo de sabor;) .

+3

idea inteligente :) +1 – lukya

+1

mucho más simple que el usuario NSDate compare: ¡bien hecho! –

+0

Sí, gracias. +1 – fnc12

28

la comparación de fechas utilizan -compare: método:

Valor devuelto Si:

  • El receptor y anotherDate son exactamente iguales entre sí, NSOrderedSame
  • El receptor es tarde en tiempo que otra fecha, NSOrderedDesc terminando
  • El receptor es anterior en el tiempo que anotherDate, NSOrderedAscending.
11

Como usted tiene NSDates:

NSDate *datStartDate = [NSDate dateWithString:@"2010-10-01 03:00:00 +0900"]; 
NSDate *datEndDate = [NSDate dateWithString:@"2010-10-01 04:00:00 +0900"]; 

if (([datStartDate compare:datEndDate]) == NSOrderedDescending) { 
    ... 
} 
+0

La construcción de cadenas con 'lenguaje natural' está ahora totalmente obsoleto y esto no va a compilar. – Lewis42

17

... ¿Qué hay de

if ([datStartDate earlierDate: datEndDate] == datStartDate) { 
    // datStartDate is earlier 
} else { 
    // datEndDate is earlier 
} 
+0

Muchas gracias :) – Supertecnoboff

2

Swift versión 2 de la respuesta aceptada:

if firstDate.timeIntervalSinceDate(secondDate) > 0 { 
    // firstDate is greater (further in the future) than secondDate 
} 
Cuestiones relacionadas