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

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

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



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

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


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

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

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

Сергей    25.09.2011    3821    4.2 из 5.0 (4)

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

    К сожалению банальное прибавление срока доставки к операторам 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?>

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

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

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

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

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

    Обсуждение

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

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