Вход / Регистрация

Создайте сайт прямо сейчас!

Зарегистрируйтесь по ссылкам и получите дополнительные бонусы при создании сайта



  • Персональный перечень способов заработка на сайте именно вашей тематики
  • Аудит юзабилити сайта бесплатно $20
  • Набор скриптов на сумму $40 для увеличения продаж
  • Аудит юзабилити интернет магазина бесплатно $60

Как получить бонусы?


Как только вы создадите сайт по одной из указанных ссылок, я увижу это в отчете партнерской программы:

После оплаты одного из пакетов, отправьте запрос на info@ucozmagazines.ru с указанием адреса созданного сайта.

Вывод предполагаемой даты доставки товара

Честно признаться - задача не из легких и чтобы реализовать ее самостоятельно мне потребовалось много времени. Сейчас я уже полностью завершил статью и с момента написания первых строк прошло более месяца. Столько я шел к ее решению, попутно пытаясь оптимизировать и упростить восприятие.

К сожалению банальное прибавление срока доставки к операторам DAY, MONTH, YEAR не дает  нужного результата. Например в конце месяца мы бы получили 32 апреля - это никуда не годится.

Постановка задачи и ключевые моменты

Вывести предполагаемую дату доставки вида DD.MM.YYYY, если известно, что доставка производится по средам.
  • Имеются коды вывода DAY (1...31), MONTH (1...12), YEAR (YYYY). Необходимо подставить 0 перед датой и месяцем, которые меньше 10, чтобы получить не 1.1.2012, а 01.01.2012;
  • Необходимо учесть месяцы, в которых 31 день (01,03,05,07,08,10,12). При оформлении заказа после 29 числа - прибавлять к месяцу единицу. Исключение составляет декабрь - вместо прибавления единицы нужно вывести месяц января (01), прибавить год и 14 дней выходных, которые также нужно учесть для России.
  • Необходимо учесть месяцы, в которых 30 дней (04,06,09,11).
  • Необходимо учесть февраль, в том числе високосные года.

Написание кода

Само по себе написание кода не требует каких-либо разъяснений. Это простое перенесение блок-схемы. Поэтому приступим сразу к делу.
Code
<?if $MONTH$='2'?>
  <?if $YEAR$='2012' or $YEAR$='2016' or $YEAR$='2020'?>
   <?if $WDAY$='Пн'?>
    <?if $DAY$+2>=30?>
     0<?$DAY$-27?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вт'?>
    <?if $DAY$>=30?>
     01.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Ср'?>
    <?if $DAY$+7>=30?>
     0<?$DAY$-22?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Чт'?>
    <?if $DAY$+6>=30?>
     0<?$DAY$-23?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Пт'?>
    <?if $DAY$+5>=30?>
     0<?$DAY$-24?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Сб'?>
    <?if $DAY$+4>=30?>
     0<?$DAY$-25?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вс'?>
    <?if $DAY$+3>=30?>
     0<?$DAY$-26?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
  <?else?>
   <?if $WDAY$='Пн'?>
    <?if $DAY$+2>=29?>
     0<?$DAY$-26?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вт'?>
    <?if $DAY$>=29?>
     01.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Ср'?>
    <?if $DAY$+7>=29?>
     0<?$DAY$-21?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Чт'?>
    <?if $DAY$+6>=29?>
     0<?$DAY$-22?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Пт'?>
    <?if $DAY$+5>=29?>
     0<?$DAY$-23?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Сб'?>
    <?if $DAY$+4>=29?>
     0<?$DAY$-24?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вс'?>
    <?if $DAY$+3>=29?>
     0<?$DAY$-25?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
  <?endif?>
<?else?>
  <?if $MONTH$='4' or $MONTH$='6' or $MONTH$='9' or $MONTH$='11'?>
   <?if $WDAY$='Пн'?>
    <?if $DAY$+2>=31?>
     0<?$DAY$-28?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вт'?>
    <?if $DAY$>=31?>
     01.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Ср'?>
    <?if $DAY$+7>=31?>
     0<?$DAY$-23?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Чт'?>
    <?if $DAY$+6>=31?>
     0<?$DAY$-24?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Пт'?>
    <?if $DAY$+5>=31?>
     0<?$DAY$-25?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Сб'?>
    <?if $DAY$+4>=31?>
     0<?$DAY$-26?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вс'?>
    <?if $DAY$+3>=31?>
     0<?$DAY$-27?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
  <?endif?>  
   
  <?if $MONTH$='1' or $MONTH$='3' or $MONTH$='5' or $MONTH$='8' or $MONTH$='10'?>
   <?if $WDAY$='Пн'?>
    <?if $DAY$+2>=32?>
     0<?$DAY$-29?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вт'?>
    <?if $DAY$>=32?>
     01.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Ср'?>
    <?if $DAY$+7>=32?>
     0<?$DAY$-24?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Чт'?>
    <?if $DAY$+6>=32?>
     0<?$DAY$-25?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Пт'?>
    <?if $DAY$+5>=32?>
     0<?$DAY$-26?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Сб'?>
    <?if $DAY$+4>=32?>
     0<?$DAY$-27?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вс'?>
    <?if $DAY$+3>=32?>
     0<?$DAY$-28?>.<?$MONTH$+1?>.$YEAR$
    <?else?>
     <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
  <?endif?>
  <?if $MONTH$='12'?>
   <?if $WDAY$='Пн'?>
    <?if $DAY$+2>=32?>
     15.01.<?$YEAR$+1?>
    <?else?>
     <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вт'?>
    <?if $DAY$>=32?>
     15.01.<?$YEAR$+1?>
    <?else?>
     <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Ср'?>
    <?if $DAY$+7>=32?>
     15.01.<?$YEAR$+1?>
    <?else?>
     <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Чт'?>
    <?if $DAY$+6>=32?>
     15.01.<?$YEAR$+1?>
    <?else?>
     <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Пт'?>
    <?if $DAY$+5>=32?>
     15.01.<?$YEAR$+1?>
    <?else?>
     <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Сб'?>
    <?if $DAY$+4>=32?>
     15.01.<?$YEAR$+1?>
    <?else?>
     <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
   <?if $WDAY$='Вс'?>
    <?if $DAY$+3>=32?>
     15.01.<?$YEAR$+1?>
    <?else?>
     <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$
    <?endif?>
   <?endif?>
  <?endif?>
<?endif?>

Что мы в итоге получили

В итоге мы получили код, который выведет нам дату ближайшей среды. Если сегодня среда, то выведет дату следующей среды.

Это позволит Вашим покупателям ориентироваться в предполагаемой дате доставки. Это своего рода гарантия, что "мы к Вам уже выехали, только оформите заказ". Положительно влияет на доверие посетителя к магазину. Является одним из маст-хэв пунктов по улучшению конверсии интернет-магазина и ведет к снижению отказов на странице чекаута (оформления заказа).

Я желаю Вам увеличения конверсии и интересных идей. До новых встреч

Статьи по теме

Сергей    20.02.2014    7007    4.0 из 5.0 (6)

Оцените материал:

Обсуждение

Всего комментариев: 7

avatar
1
как мне поставить себе на сайт?
avatar
2
Игорь, Вам необходимо разместить код например на странице оформления заказа
"Мы доставим Вам заказ {код}."
Можно размещать его на странице товара, тогда перед заказ покупатель будет знать когда ему привезут покупку.
avatar
3
спасибо
а как сделать, чтобы доставка показывалась не по средам, а по другим дням? Или вобще через три дня от сегодня
avatar
4
Могу выслать на е-мэйл. Но его надо будет дорабатывать
avatar
5
В какой блок ставить?
g
6
А почему не видно всех комментариев? Только задающих вопросы, а ответов не видно?
avatar
7
Ответы были отправлены на почту.
Этот код сильно устарел и я его не использую в настоящее время. Все потому, что для изменения даты доставки его нужно полностью переписать. Все это гораздо проще сделать на JavaScript
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вывод предполагаемой даты доставки товара