Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Определение времени события (https://javascript.ru/forum/jquery/21975-opredelenie-vremeni-sobytiya.html)

sinh 01.10.2011 17:39

Определение времени события
 
Всем привет.

Довольно дурацкий вопрос, но я не так давно прогаю, и поэтому не могу понять этот простой алгоритм.

Условие довольно простое — есть событие, у него есть время начала и время окончания. есть текущее время (begin, end, now). Надо определить событие начнется в будущем, закончилось в прошлом, или еще продолжается.
Проблема в том, что не для всех событий есть время окончания или начала. Может быть лишь что-то одно. Время текущее понятное дело есть всегда. На данный момент у меня получился быдлокод:


var now = new Date().valueOf();
if (!b.Начало && !b.Окончание) {} else if (b.Начало && !b.Окончание) {
  var d_begin = rightDate(b.Начало, 4, false);
  if (now < d_begin) {
    newsItem.append("<p class='meta future'>" + region + "<br />Начнётся с " + rightDate(b.Начало, 4, true) + "</p>");
  } else {
    newsItem.append("<p class='meta achtung'>" + region + "<br />Продолжается с " + rightDate(b.Начало, 4, true) + "       </p>");
  }
} else if (!b.Начало && b.Окончание) {
  var d_end = rightDate(b.Окончание, 4, false);
  if (now < d_end) {
    newsItem.append("<p class='meta achtung'>" + region + "<br />Продлится до " + rightDate(b.Окончание, 4, true) + "  </p>");
} else {
newsItem.append("<p class='meta complete'>" + region + "<br />Завершилось " + rightDate(b.Окончание, 4, true) + "</p>");
}
} else {
  var d_begin = rightDate(b.Начало, 4, false);
  var d_end = rightDate(b.Окончание, 4, false);
  if (d_begin <= now && now <= d_end) {
    newsItem.append("<p class='meta achtung'>" + region + "<br />Продолжается с " + rightDate(b.Начало, 4, true) + " до "    + rightDate(b.Окончание, 4, true) + "</p>");
  } else if (now < d_begin) {
    newsItem.append("<p class='meta future'>" + region + "<br />Начнется с " + rightDate(b.Начало, 4, true) + " до " +   rightDate(b.Окончание, 4, true) + "</p>");
  } else {
    newsItem.append("<p class='meta complete'>" + region + "<br />Завершилось " + rightDate(b.Начало, 4, true) + " — " +    rightDate(b.Окончание, 4, true) + "</p>");
  }
}


Скажите, пожалуйста, каким образом можно его упростить, оптимизировать?

melky 01.10.2011 18:42

пример скрипта сюда киньте

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

я, например, его работу смутно себе представляю.


Часовой пояс GMT +3, время: 04:09.