Показать сообщение отдельно
  #1 (permalink)  
Старый 01.10.2011, 17:39
Интересующийся
Отправить личное сообщение для sinh Посмотреть профиль Найти все сообщения от sinh
 
Регистрация: 22.05.2010
Сообщений: 11

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

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

Условие довольно простое — есть событие, у него есть время начала и время окончания. есть текущее время (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>");
  }
}


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

Последний раз редактировалось sinh, 01.10.2011 в 17:42.
Ответить с цитированием