Как реализуется легкопонятная дата поста/комментария?

В общем-то из вопроса все понятно. Все чаще и чаще встречаются такие варианты вывода дат. Как лучше такое реализовать?
  • Вопрос задан
  • 3205 просмотров
Решения вопроса 2
dizballanze
@dizballanze
Software developer at Yandex
Если интересует готовое решение, то moment.js такое умеет.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Считаем разницу от текущего времени
Если меньше минуты - выводим "только что"
Иначе если меньше часа - выводим "XX минуту/минуты/минут назад"
Иначе если меньше суток - выводим "XX час/часа/часов назад"
Иначе если меньше двух суток - выводим "вчера"
Иначе если меньше трёх суток - выводим "позавчера"
Иначе если меньше месяца - выводим "XX день/дней/дня назад"
...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@SevaXXL
А в начале нужно проверить дату на компьютере клиента. Если она очень отличается от настоящей, то лучше оставить абсолютное значение даты.
Ответ написан
GM2mars
@GM2mars
Реализация на js, недавно писал, не совсем по вопросу, но из той же оперы:
function slang(number, par) {
  var text;
  if (number>100) {
    return slang(number%100, par);
  }
  if (number>10 && number<15) {
    if (par=="d") text=" дней"; else if (par="z") text=" записей ";
    return text;
  } else {
    switch(number%10) {
      case 0:  case 5:  case 6:  case 7:  case 8:  case 9:
        if (par=="d") text=" дней"; else if (par="z") text=" записей ";
        return text;
      case 1:
        if (par=="d") text=" день"; else if (par="z") text=" запись ";
        return text;
      case 2:  case 3:  case 4:
        if (par=="d") text=" дня"; else if (par="z") text=" записи ";
        return text;
    }
  }
}

Принимает в качестве значений два параметра: (int) число и идентификатор слова (d - день, z - запись).

Работает так:
console.log("Выбрано 135 "+slang(135, "z")+" за 2"+ slang(2, "d"));

Выведет: Выбрано 135 записей за 2 дня.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы