iPhone: конвертировать строку даты в метку относительного времени - PullRequest
39 голосов
/ 24 мая 2009

У меня есть метка времени в виде строки:

Четверг, 21 мая 09 19:10:09 -0700

и я хотел бы преобразовать его в метку относительного времени, например «20 минут назад» или «3 дня назад».

Какой лучший способ сделать это, используя Objective-C для iPhone?

Ответы [ 11 ]

0 голосов
/ 24 мая 2009

Не уверен, почему это не относится к Cocoa-Touch, мне бы неплохо было бы сделать это стандартно.

Установите некоторые типы для хранения данных, это облегчит, если вам когда-нибудь понадобится локализовать их немного больше. (очевидно, расширить, если вам нужно больше периодов времени)

typedef struct DayHours {
    int Days;
    double Hours;
} DayHours;


+ (DayHours) getHourBasedTimeInterval:(double) hourBased withHoursPerDay:(double) hpd
{
    int NumberOfDays = (int)(fabs(hourBased) / hpd);
    float hoursegment = fabs(hourBased) - (NumberOfDays * hpd);
    DayHours dh;
    dh.Days = NumberOfDays;
    dh.Hours = hoursegment;
    return dh;
}

ПРИМЕЧАНИЕ. Я использую расчеты, основанные на часах, так как это то, к чему относятся мои данные. NSTimeInterval основан на секундах. Мне также пришлось конвертировать между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...