Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Вывод ожидаемой доставки на сайте (https://javascript.ru/forum/project/56723-vyvod-ozhidaemojj-dostavki-na-sajjte.html)

sgans 01.07.2015 11:15

Вывод ожидаемой доставки на сайте
 
Всем привет!
Нужна помощь в реализации скрипта начинающему.
Суть следующая:
Если пользователь заходит в карточку товара на текущий день до 15.00 , то доставка завтра.
Если пользователь заходит в карточку товара на текущий день после 15.00, то доставка после завтра.
Вроде бы написал, но столкнулся с проблемой последнего дня в месяце, скрипт начал выводить неправильную дату , то есть, завтра допустим 1 мая, а выводит 32 апреля....
скрипт прилагается


<script type="text/javascript"> // выводим дату доставки

var d = new Date();
var theDay = d.getDay();
var time = d.getHours();

var dTommorow = new Date();
var dTommorow.setDate(D.getDate() + 1));

var dAfterTommorow = new Date();
var dAfterTommorow.setDate(D.getDate() + 2));

var month=new Array(); // выводим массив месяцев

month[0] = "Января";
month[1] = "Февраля";
month[2] = "Марта";
month[3] = "Апреля";
month[4] = "Мая";
month[5] = "Июня";
month[6] = "Июля";
month[7] = "Августа";
month[8] = "Сентября";
month[9] = "Октября";
month[10] = "Ноября";
month[11] = "Декабря";


if(time < 15) // Проверка: если до 15.00, то доставка завтра
{
/*document.write("<span>Доставим по Москве:</span>"+" " +[d.getDate()+1] + " " + month[d.getMonth()]);*/
document.write("<span>Доставим по Москве:</span>"+" " +[dTommorow.getDate()] + " " + month[dTommorow.getMonth()]);
}
else
{
document.write("<span>Доставим по Москве:</span>"+" " +[d.AfterTommorow.getDate()] + " " + month[d.getMonth()]);
}

switch (theDay)
{
case 6:
document.write(" - Внимание! Доставка в выходные дни по договоренности"); // выводим сообщение на доставку в выходные дни
break;
case 7:
document.write(" - Внимание! Доставка в выходные дни по договоренности");
}
</script>

рони 01.07.2015 12:31

Цитата:

Сообщение от sgans
var dAfterTommorow.setDate(D.getDate() + 2));

что это D ?
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

sgans 01.07.2015 13:40

<script type="text/javascript"> // выводим дату доставки

var d = new Date();
var theDay = d.getDay();
var time = d.getHours();

var dTommorow = new Date();
var dTommorow.setDate(d.getDate() + 1));

var dAfterTommorow = new Date();
var dAfterTommorow.setDate(d.getDate() + 2));

var month=new Array(); // выводим массив месяцев

month[0] = "Января";
month[1] = "Февраля";
month[2] = "Марта";
month[3] = "Апреля";
month[4] = "Мая";
month[5] = "Июня";
month[6] = "Июля";
month[7] = "Августа";
month[8] = "Сентября";
month[9] = "Октября";
month[10] = "Ноября";
month[11] = "Декабря";


if(time < 15) // Проверка: если до 15.00, то доставка завтра
{document.write("<span>Доставим по Москве:</span>"+" " +[dTommorow.getDate()] + " " + month[dTommorow.getMonth()]);
}
else
{document.write("<span>Доставим по Москве:</span>"+" " +[dAfterTommorow.getDate()] + " " + month[dAfetrTommorow.getMonth()]);
}

switch (theDay)
{
case 6:
document.write(" - Внимание! Доставка в выходные дни по договоренности"); // выводим сообщение на доставку в выходные дни
break;
case 7:
document.write(" - Внимание! Доставка в выходные дни по договоренности");
}
</script>

kostyanet 09.07.2015 06:27

Обалдеть. А если он напишет - привезите мне послезавтра в 11-00, вы что ему скажете "в очередь сукины дети"?

vendetta_js 13.07.2015 12:21

используйте BB-коды для форматирование .....

sgans 15.07.2015 17:12

Ничего не напишет, читай задание внимательно. Это информационное сообщение.

sgans 15.07.2015 17:14

Цитата:

Сообщение от vendetta_js (Сообщение 379026)
используйте BB-коды для форматирование .....

В общем по существу ответить никто не может, вот только писать что и чем форматировать и какие сообщения надо писать эт пожалуйста.

laimas 15.07.2015 21:05

По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй эгото ялвятеся то, что мы чиатем не кдаужю бкуву по отдльенотси, а все солво цликеом.

Но это текст, а вот код, это иное. Выставляя код, потрудитесь его обрамить ВВ-тегами соответствующими, чтобы он воспринимался как код, а не Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете Вы же просите помощи, значит уважайте тех, кто должен вникать в код ваш.

Что касается непосредственно кода - а каким образом сервер будет знать, что кто-то выбрал товар до или после 15:00? Товаром ведь ведает не клиент, а сервер. К тому же, чтобы так однозначно трактовать доставку, магазин должен обслуживать клиентов только своего часового пояса, все запросы на доставку (выбор товара) должны в пределах часового пояса сервера. Это так?

sgans 16.07.2015 11:00

Цитата:

Сообщение от laimas (Сообщение 379844)

Что касается непосредственно кода - а каким образом сервер будет знать, что кто-то выбрал товар до или после 15:00? Товаром ведь ведает не клиент, а сервер. К тому же, чтобы так однозначно трактовать доставку, магазин должен обслуживать клиентов только своего часового пояса, все запросы на доставку (выбор товара) должны в пределах часового пояса сервера. Это так?

Еще раз повторяю, товар никто не выбирает, клиент заходит в карточку товара, в описании он просто видит инфо, что доставка по москве возможна завтра, если он зашел на эту страницу до 15.00.
А вот по по поводу часовых поясов пока не задумывался, так как хост питерский, то соответственно берется московское время.
Но дело не в этом, ошибка проявилась на конец месяца - к последнему дню месяца прибавляется еще 1 день, и вместо 1 апреля отображается 32 марта... как это поправить , вот в чем суть всего вопроса..
А тут развели демагогию по поводу, как должно выглядеть сообщение и все такое...

sgans 16.07.2015 11:03

вот пример, чтоб было понятней: http://www.galantes.ru/index.php?productID=10551


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