2011-05-04 5 views
7

Decir que tengo la NSString @"tomorrow"¿Hay una manera de convertir un NSString fecha de lenguaje natural a un NSDate

¿Hay alguna biblioteca que lleva cadenas como este y los convierte en NSDates? Me estoy imaginando/esperando algo como esto:

NSString* humanDate = @"tomorrow at 4:15"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"x at HH:MM"]; 
NSDate* date = [dateFormatter dateFromString:humanDate]; 

También me gustaría hacer cosas como "el próximo lunes", etc., pero no tiene que ser súper sofisticado. Puedo hacer cumplir las reglas de entrada, pero me gustaría tener un poco de lenguaje natural disponible.

Mi alternativa es tomar la cuerda, dividirla en pedazos y formatearla manualmente. Pero esperaba que alguien ya haya hecho esto.

Respuesta

4

¿Te refieres a algo así como dateWithNaturalLanguageString:?

Desde el enlace:

dateWithNaturalLanguageString:

crea y devuelve un objeto NSDate establecer la fecha y hora especificada por una cadena dada.

+ (id) dateWithNaturalLanguageString: (NSString *) cadena

Una cadena que contiene una especificación coloquial de una fecha, como “el martes pasado en la cena”, “15:00 31 de diciembre de 2001,” “12/31/01, "or" 31/12/01. "

+2

Esto se considera uso de API privada, ¿no? No está documentado en NSDate para iOS y produce una advertencia. Sin embargo, funciona –

+0

wow, eso es perfecto. ¡Muchas gracias! – Joel

+3

-1 si envía una aplicación al iOS App Store con esto, ** probablemente será rechazada **. '+ dateWithNaturalLanguageString:' es una API privada en iOS. –

Cuestiones relacionadas