КреатиВ.ТуТ

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » КреатиВ.ТуТ » IPB 1.3 » Даты


Даты

Сообщений 1 страница 21 из 21

1

Вообщем, есть идея..

Написать функцию, на вход которой посылается обычная форумная дата в виде текста (даты тем, ответов, обовлений и т.п.), она же возвращает
во-первых русскую дату, во-вторых цвет (в зависимости от текущей даты, если 5 минут назад (к примеру) то красный если день, то серый и т.п.) в-третьих разницу во времени, сколько миинут назад или часов, дней и недель.

Так заменять даты в темах, и в ответах, имхо вещь нужная.

Сяду как-нить, как время будет, а это что б не забыть.

Если есть соображения, песшыте.

0

2

В некоторых местах:
- На гл странице на против каждого раздела (колонка обновления)
- Кто в онлайне (там где время)
- В постах (Отправлено:....)
- В списке тем (колонка обновления)

Теперь вместо даты пишется немного по другому.

Примеры:
"2 мин. назад"
"Час назад"
"Полтора часа назад"
"2 ч 10 мин. назад"
"Сегодня в 16:30"
"Вчера в 20:00"
"Позавчера в 10:00"

дальше не делал.

Ну как?

0

3

Орининально.  :)
Вот только видимо иногда что то несрабатывает, или это от Opera так себя ведёт, допустим наблюдал за темой "Анимированные аваторы":
поначалу:
Сегодня в 8:1:30
Автор: ExperT

затем:
-26 мин. назад
Автор: ExperT

и вот ещё, соседняя тема "Даты":
29 мин. назад
Автор: ExperT

без "-" минуса.

0

4

Непонял, время в обратную сторону идёт "Анимированные аваторы" было:
-26 мин. назад
Автор: ExperT

а теперь:
-16 мин. назад
Автор: ExperT

0

5

Возможно :) надо искать ошибку, ща скину скрипт, если есть возможность потестируй плз

// функция подмены даты
function showDate(date1) {
   var timeNow = new Date();
   var timeUpdate = new Date(date1);
   DateStr = date1;
 
   // Разница в годах
   yearsIsUp   = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*365*60*1000));
   // Разница в месяцах
   monthIsUp   = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*30*60*1000));
   // Разница в днях
   daysIsUp    = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*60*1000));
   // Разница в часах
   hoursIsUp   = Math.round((timeNow.getTime() - timeUpdate.getTime())/(60*60*1000));
   // Разница в минутах
   minutesIsUp = Math.round((timeNow.getTime() - timeUpdate.getTime())/(60*1000));

   // Если сегодня
   if (daysIsUp == 0) {
    // Если прошло меньше часа
     if (hoursIsUp == 0) {
       DateStr = minutesIsUp + " мин. назад";

    // Если прошло больше 40 минут и меньше 2.40 часов (патамушта округлено)
     } else if ((hoursIsUp >= 1) && (hoursIsUp < 3)) {
       // если прошло больше 29 минут и меньше 60 минут
       if ((minutesIsUp > 29) && (minutesIsUp < 60)) {
         DateStr = minutesIsUp + " мин. назад";

       // если прошло больше 60 минут и меньше 70 минут
       } else if ((minutesIsUp >= 60) && (minutesIsUp < 70)) {
         DateStr = "Час назад";

      // Если больше 70 минут и меньше 100 минут
       } else if ((minutesIsUp >= 70) && (minutesIsUp < 100)) {
         DateStr = "Полтора часа назад";

      // Если прошло больше 100 минут
       } else {
         minutes = Math.round((((((minutesIsUp/60)%1)*100)*60)/100));
         DateStr = ((minutesIsUp/60) - ((minutesIsUp/60)%1)) + " ч " + minutes + " мин. назад";
       }
     // если прошло больше 2 часов 40 минут
     } else {
       DateStr = "Сегодня в " + timeUpdate.getHours() + ":" + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();
     }

   // Если вчера
   } else if (daysIsUp == 1) {
     DateStr = "Вчера в " + timeUpdate.getHours() + ":" + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();;

   // Если позавччера
   } else if (daysIsUp == 2) {
     DateStr = "Позавчера в " + timeUpdate.getHours() + ":" + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();;;
 
   // Если больше двух дней назад
   } else {
     // если текущий год, то год из даты убирается
     if (yearsIsUp == 0) {
       DateStr = DateStr.replace(timeUpdate.getFullYear(),"");
     }
   }
  
   document.write(DateStr);
}

</script>

0

6

А может и нормально всё, я сейчас у себя в профиле убрал галочку Переход на летнее время? и вроде норм :pardon: ,ладно потестим, посмотрим.

0

7

Ну во всяком случае может внесешь что новое, к примеру надо сделать еще условия:

Если 0 минут то писать "Толька што" и еще сделать "лидирующие нули" т.е. что б небыло такого времени как "1.0.9" а "01.00.09"

Отредактировано ExperT (2006-06-14 08:57:48)

0

8

Вроде так:

// функция подмены даты
function showDate(date1) {
  var timeNow = new Date();
  var timeUpdate = new Date(date1);
  DateStr = date1;
 
  // Разница в годах
  yearsIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*365*60*1000));
  // Разница в месяцах
  monthIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*30*60*1000));
  // Разница в днях
  daysIsUp    = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*60*1000));
  // Разница в часах
  hoursIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(60*60*1000));
  // Разница в минутах
  minutesIsUp = Math.round((timeNow.getTime() - timeUpdate.getTime())/(60*1000));

  // Если сегодня
  if (daysIsUp == 0) {
    // Если прошло меньше часа
    if (hoursIsUp == 0) {
  // Если прошло меньше минуты
  if (minutesIsUp == 0) {
  DateStr = "Толька што";
  } else {
       DateStr = minutesIsUp + " мин. назад";
    }

    // Если прошло больше 40 минут и меньше 2.40 часов (патамушта округлено)
    } else if ((hoursIsUp >= 1) && (hoursIsUp < 3)) {
      // если прошло больше 29 минут и меньше 60 минут
      if ((minutesIsUp > 29) && (minutesIsUp < 60)) {
        DateStr = minutesIsUp + " мин. назад";

      // если прошло больше 60 минут и меньше 70 минут
      } else if ((minutesIsUp >= 60) && (minutesIsUp < 70)) {
        DateStr = "Час назад";

      // Если больше 70 минут и меньше 100 минут
      } else if ((minutesIsUp >= 70) && (minutesIsUp < 100)) {
        DateStr = "Полтора часа назад";

      // Если прошло больше 100 минут
      } else {
        minutes = Math.round((((((minutesIsUp/60)%1)*100)*60)/100));
        DateStr = ((minutesIsUp/60) - ((minutesIsUp/60)%1)) + " ч " + minutes + " мин. назад";
      }
    // если прошло больше 2 часов 40 минут
    } else {
      DateStr = "Сегодня в " + timeUpdate.getHours() + ":" + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();
    }

  // Если вчера
  } else if (daysIsUp == 1) {
    DateStr = "Вчера в " + timeUpdate.getHours() + ":" + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();;

  // Если позавччера
  } else if (daysIsUp == 2) {
    DateStr = "Позавчера в " + timeUpdate.getHours() + ":" + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();;;
 
  // Если больше двух дней назад
  } else {
    // если текущий год, то год из даты убирается
    if (yearsIsUp == 0) {
      DateStr = DateStr.replace(timeUpdate.getFullYear(),"");
    }
  }
 
  document.write(DateStr);
}

</script>

:pardon:

0

9

2 Grin: Эт понятно :)

А есчо?)

0

10

Еще надо б подумать и сделать модификацию к этому скрипту, что б визуально можно было (по цвету, или есчо лучше по картинке) определять давность даты.

На сайтах обычно ставят перед датой недавней либо NEW, либо HOT - собсна нам может тоже несколько заготовок придумать. Как ты считаешь?

0

11

Лидирующие нули:

// функция подмены даты
function showDate(date1) {
  var timeNow = new Date();
  var timeUpdate = new Date(date1);
  DateStr = date1;
 
  // Разница в годах
  yearsIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*365*60*1000));
  // Разница в месяцах
  monthIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*30*60*1000));
  // Разница в днях
  daysIsUp    = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*60*1000));
  // Разница в часах
  hoursIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(60*60*1000));
  // Разница в минутах
  minutesIsUp = Math.round((timeNow.getTime() - timeUpdate.getTime())/(60*1000));
 
  // Лидирующие нули в часах
  if (timeUpdate.getHours() <= 9) {
  zeroH = "0"
  } else {
  zeroH = ""
  }
  // Лидирующие нули в минутах
  if (timeUpdate.getMinutes() <= 9){
  zeroM = "0"
  } else {
  zeroM = ""
  }

   
  // Если сегодня
  if (daysIsUp == 0) {
    // Если прошло меньше часа
    if (hoursIsUp == 0) {
  // Если прошло меньше минуты
  if (minutesIsUp == 0) {
  DateStr = "Толька што";
  } else {
      DateStr = minutesIsUp + " мин. назад";
    }

    // Если прошло больше 40 минут и меньше 2.40 часов (патамушта округлено)
    } else if ((hoursIsUp >= 1) && (hoursIsUp < 3)) {
      // если прошло больше 29 минут и меньше 60 минут
      if ((minutesIsUp > 29) && (minutesIsUp < 60)) {
        DateStr = minutesIsUp + " мин. назад";

      // если прошло больше 60 минут и меньше 70 минут
      } else if ((minutesIsUp >= 60) && (minutesIsUp < 70)) {
        DateStr = "Час назад";

      // Если больше 70 минут и меньше 100 минут
      } else if ((minutesIsUp >= 70) && (minutesIsUp < 100)) {
        DateStr = "Полтора часа назад";

      // Если прошло больше 100 минут
      } else {
        minutes = Math.round((((((minutesIsUp/60)%1)*100)*60)/100));
        DateStr = ((minutesIsUp/60) - ((minutesIsUp/60)%1)) + " ч " + minutes + " мин. назад";
      }
    // если прошло больше 2 часов 40 минут
    } else {
      DateStr = "Сегодня в " + zeroH + timeUpdate.getHours() + ":" + zeroM + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();
    }

  // Если вчера
  } else if (daysIsUp == 1) {
    DateStr = "Вчера в " + zeroH + timeUpdate.getHours() + ":" + zeroM + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();;

  // Если позавччера
  } else if (daysIsUp == 2) {
    DateStr = "Позавчера в " + zeroH + timeUpdate.getHours() + ":" + zeroM + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();;;
 
  // Если больше двух дней назад
  } else {
    // если текущий год, то год из даты убирается
    if (yearsIsUp == 0) {
      DateStr = DateStr.replace(timeUpdate.getFullYear(),"");
    }
  }
 
  document.write(DateStr);
}

</script>

Еще надо б подумать и сделать модификацию к этому скрипту, что б визуально можно было (по цвету, или есчо лучше по картинке) определять давность даты.

На сайтах обычно ставят перед датой недавней либо NEW, либо HOT - собсна нам может тоже несколько заготовок придумать. Как ты считаешь?

Мона.   :)

0

12

Скорее по цвету быстрее и информативнее - тока што надо красным сделать :)

0

13

Толька што, от 1 до 5, от 5 до 10? и от 10 до 30.

// функция подмены даты
function showDate(date1) {
  var timeNow = new Date();
  var timeUpdate = new Date(date1);
  DateStr = date1;
 
  // Разница в годах
  yearsIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*365*60*1000));
  // Разница в месяцах
  monthIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*30*60*1000));
  // Разница в днях
  daysIsUp    = Math.round((timeNow.getTime() - timeUpdate.getTime())/(24*60*60*1000));
  // Разница в часах
  hoursIsUp  = Math.round((timeNow.getTime() - timeUpdate.getTime())/(60*60*1000));
  // Разница в минутах
  minutesIsUp = Math.round((timeNow.getTime() - timeUpdate.getTime())/(60*1000));
 
  // Лидирующие нули в часах
  if (timeUpdate.getHours() <= 9) {
  zeroH = "0";
  } else {
  zeroH = "";
  }
  // Лидирующие нули в минутах
  if (timeUpdate.getMinutes() <= 9){
  zeroM = "0";
  } else {
  zeroM = "";
  }
 
  // Разница в цвете
  if (minutesIsUp <= 5) {
  minutNEW = "<span style='color:RED'>" + minutesIsUp + " мин. назад</span>";
  } else if ((6 <= minutesIsUp) && (minutesIsUp <= 10)) {
  minutNEW = "<span style='color:ORANGE'>" + minutesIsUp + " мин. назад</span>";
  } else if ((11 <= minutesIsUp) && (minutesIsUp <= 30)) {
  minutNEW = "<span style='color:YELLOW'>" + minutesIsUp + " мин. назад</span>";
  } else {
  minutNEW = minutesIsUp + " мин. назад";
  }

   
  // Если сегодня
  if (daysIsUp == 0) {
    // Если прошло меньше часа
    if (hoursIsUp == 0) {
  // Если прошло меньше минуты
  if (minutesIsUp == 0) {
  DateStr = "<div style='color:RED'><b>Толька што</b></div>";
  } else {
      DateStr = minutNEW;
    }

    // Если прошло больше 40 минут и меньше 2.40 часов (патамушта округлено)
    } else if ((hoursIsUp >= 1) && (hoursIsUp < 3)) {
      // если прошло больше 29 минут и меньше 60 минут
      if ((minutesIsUp > 29) && (minutesIsUp < 60)) {
        DateStr = minutesIsUp + " мин. назад";

      // если прошло больше 60 минут и меньше 70 минут
      } else if ((minutesIsUp >= 60) && (minutesIsUp < 70)) {
        DateStr = "Час назад";

      // Если больше 70 минут и меньше 100 минут
      } else if ((minutesIsUp >= 70) && (minutesIsUp < 100)) {
        DateStr = "Полтора часа назад";

      // Если прошло больше 100 минут
      } else {
        minutes = Math.round((((((minutesIsUp/60)%1)*100)*60)/100));
        DateStr = ((minutesIsUp/60) - ((minutesIsUp/60)%1)) + " ч " + minutes + " мин. назад";
      }
    // если прошло больше 2 часов 40 минут
    } else {
      DateStr = "Сегодня в " + zeroH + timeUpdate.getHours() + ":" + zeroM + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();
    }

  // Если вчера
  } else if (daysIsUp == 1) {
    DateStr = "Вчера в " + zeroH + timeUpdate.getHours() + ":" + zeroM + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();;

  // Если позавччера
  } else if (daysIsUp == 2) {
    DateStr = "Позавчера в " + zeroH + timeUpdate.getHours() + ":" + zeroM + timeUpdate.getMinutes() + ":" + timeUpdate.getSeconds();;;
 
  // Если больше двух дней назад
  } else {
    // если текущий год, то год из даты убирается
    if (yearsIsUp == 0) {
      DateStr = DateStr.replace(timeUpdate.getFullYear(),"");
    }
  }
 
  document.write(DateStr);
}

</script>

0

14

2 Grin: Желтый глаза мазолит. Я подумаю над палитрой.

имхо:   
Только что Красный
Минуты Оранжевый
Часы Зеленоватый
Дни Синий
Недели Черный

все оттенки должны быть темными и скорей сероватыми. Позже может выложу конкретные цвета.

0

15

имхо желтый на белом фоне не видно

0

16

2 ExperT:

2 Grin: Желтый глаза мазолит. Я подумаю над палитрой.

Да желтый никатит.

имхо:
Только что Красный
Минуты Оранжевый
Часы Зеленоватый
Дни Синий
Недели Черный

Помоему очень оляписто будет выглядеть особенно на главной странице ИМХО.

0

17

2 Grin: серовато будет - нормально

0

18

А поподробней об этом можно? Как реализовать это (на этом форуме это реализовано)?

0

19

да, расскажите куда ставить то? и что именно ставить...есть доработанная и протестированная версия?

0

20

2 MEDDA:
Есть относительно протестированная, вами же.  :)
А куда ставить будет рассказено позже, насколько позже нз.
:pardon:

0

21

А куда ставить будет рассказено позже, насколько позже нз.

Так куда ставить и какой именно? :)

0


Вы здесь » КреатиВ.ТуТ » IPB 1.3 » Даты