2012-01-05 9 views

Respuesta

86

Prueba esto:

if ([someDate timeIntervalSinceNow] < 0.0) { 
    // Date has passed 
} 
+13

pongo eso en un método categoría de esta manera puede utilizar 'someDate.isInPast'. –

+0

su código está comparando solo la fecha, no la hora. Al igual que estoy comparando el mismo día pero en otro momento como este: 1/1/2015 5:00:00 y 1/1/2015 7:00:00 con esta fecha me está mostrando la fecha ha pasado. – Daddy

+1

+ Papá, no estoy seguro de lo que quiere decir. Según la documentación, este método debe ser perfecto: "El intervalo de tiempo entre el objeto de fecha y la fecha y hora actual. (Solo lectura) Si el objeto de fecha es anterior a la fecha y hora actual, el valor de esta propiedad es negativo". –

3

Puede utilizar

[NSDate date]; 

para obtener un objeto NSDate que representa la hora y fecha actuales.

luego compararlo con la fecha en que se está analizando, por ejemplo:

if ([currentDate timeIntervalSince1970] > [yourDate timeIntervalSince1970]) { 
// yourDate is in the past 
} 

puede utilizar esto para comparar dos fechas. Espero que esto ayude.

+1

o hacerlo en línea: ([[ NSDate date] timeIntervalSince1970]> [yourDate timeIntervalSince1970]) –

+0

Estaba proporcionando una solución más general para comparar fechas: comparar una fecha hasta ahora es más bien un caso de nicho. Sin embargo, en la práctica, probablemente solo use timeIntervalSinceNow en este escenario particular. –

6

necesita utilizar una comparación NSDate, muchas respuestas aquí le ayudarán.

iOS: Compare two dates

lógica tendrá que ajustar, pero esto se debe configurar en la dirección correcta:

- (BOOL)date:(NSDate*)date isBefore:(BOOL)before otherDate:(NSDate*)otherDate ; 
{ 
    if(before && ([date compare:otherDate] == NSOrderedAscending)) 
     return YES; 
    if (!before && ([date compare:otherDate] == NSOrderedDescending)) 
     return YES; 
} 

uso:

if([self date:yourDate isBefore:YES otherDate:[NSDate date]]) 
+4

En una nota de estilo de codificación: su segundo parámetro realmente debería llamarse algo así como 'isBefore:'. Leer en voz alta "fecha: X es antes de: SÍ/NO otro día: Y" suena mucho mejor que "fecha: X es: SÍ/NO otro día: Y". – Taum

Cuestiones relacionadas