Algoritmo de fecha fugaz

Estoy buscando un algoritmo de fecha difusa. Acabo de comenzar a escribir uno y me di cuenta de lo tediosa que es la tarea. Rápidamente se degeneró en un montón de código horrible para hacer frente a casos especiales como la diferencia entre "ayer", "la semana pasada" y "a fines del mes pasado", todo lo cual (en algunos casos) puede referirse al mismo día pero es individualmente correcto según la fecha de hoy.

Estoy seguro de que debe haber un formateador de fecha difusa de código abierto, pero no puedo encontrarlo. Idealmente, me gustaría algo usando NSDate (OSX / iPhone) y sus formateadores, pero esa no es la parte difícil. ¿Alguien sabe de un formateador de fecha difusa que toma un período de tiempo relativo a ahora y devuelve una cadena como (pero no limitada a):

hace unos momentosen los últimos cinco minutosel día de hoesta mañananochla semana pasadel miércoles pasada principios del mes pasadojune el año pasadoun par de años atra

n un mundo ideal, me gustaría que la cadena sea lo más rica posible (es decir, devolver variantes aleatorias en "Hace un momento", como "ahora").

Aclaración. Estoy buscando algo más sutil que los bucks básicos y las cuerdas. Quiero algo que sepa "ayer" y "miércoles pasado" puede referirse al mismo período, pero solo uno es correcto cuando hoy es jueves.

Respuestas a la pregunta(14)

Su respuesta a la pregunta