Всем привет.
Довольно дурацкий вопрос, но я не так давно прогаю, и поэтому не могу понять этот простой алгоритм.
Условие довольно простое — есть событие, у него есть время начала и время окончания. есть текущее время (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>");
}
}
Скажите, пожалуйста, каким образом можно его упростить, оптимизировать?