Генерация даты на 30 дней (+ вывод завтрашней даты)

Тема в разделе "Решение различных задач по парсингу", создана пользователем nikoshot, 5 фев 2018.

  1. nikoshot

    nikoshot Member Пользователи

    Регистрация:
    14 янв 2017
    Сообщения:
    115
    Доброй ночи...
    Подскажите.. есть задача.. нужно вывести дату для запланированных публикаций..
    Например первая строка 04/02/18
    вторая строка уже на день позже 05/02/18
    третья строка 06/02/18
    и т.д..
    Но дни нужно ограничить до 30 т.е 36/02/18 быть не может...
    И еще если бы можно было делать по 10 строк одной даты....
    что бы по 10 статей публиковались в день...
     
  2. nikoshot

    nikoshot Member Пользователи

    Регистрация:
    14 янв 2017
    Сообщения:
    115
    Пока написал вопрос.. нашел решение которое подходит.. Может кому то пригодится..
    Решил вывести сначала текущую дату через
    [CD_DATE_DD]/[CD_DATE_MM]/[CD_DATE_YY] на выходе получаю 05/02/18
    затем через макрос MATCHCOUNT вывел дни [MATCHCOUNT(1|30|1|10)][CD_DATE_DD][/MATCHCOUNT]
     
  3. xLime

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Добрый день.
    Для математических операций с датой, ее необходимо преобразовать в число.
    Обратите внимание на макрос:
    Код:
    [DATETOINT(0)][/DATETOINT]
     
    Root нравится это.
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    2018-02-05_13-06-14.png
     
  5. elDen

    elDen Member Пользователи

    Регистрация:
    22 янв 2018
    Сообщения:
    18
    Город:
    Санкт-Петербург
    вместо now вставляю свою дату со смещением 0 (ноль) секунд, в результате вижу текущую дату. Хотел видеть дату, указанную на входе. У меня неверные ожидания?
    Код:
    [CD_DATE([GRAN2].2018|0|{DD} {MM} {YYYY})]
    Код:
    05 02 2018
     
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Туда вставляется дата в формате Unixtime.
     
  7. elDen

    elDen Member Пользователи

    Регистрация:
    22 янв 2018
    Сообщения:
    18
    Город:
    Санкт-Петербург
    Последнее редактирование: 5 фев 2018
  8. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    2018-02-05_15-15-15.png

    А вот сервис для получения даты в формате Unix
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Просто вставляете это число вместо now в макрос.
     
  9. elDen

    elDen Member Пользователи

    Регистрация:
    22 янв 2018
    Сообщения:
    18
    Город:
    Санкт-Петербург
    Получил вручную на сайте число в формате Unix и скормил макросу.
    Код:
    [CD_DATE(1518652800|0|{DD}.{MM}.{YYYY})]
    Получил понятный результат 15.02.2018. Хочется понять, как дальше подразумевается использование этого макроса, учитывая, что у меня есть INT число 43160, соответствующее смещённой на один день дате, полученное вот так:
    Код:
    [DATETOINT(1)]28.02.2018[/DATETOINT]
    Использование [CD_UNIXTIME] мне видится неуместным, т.к. оно кодирует в Unix Time только текущее время. Или я что-то не знаю про этот макрос?
     
  10. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Изучите скриншот еще раз http://forum.sbfactory.ru/threads/generacija-daty-na-30-dnej.6049/#post-34866

    На нем показано, куда вставить прибавку (в секундах) к полученной дате и чем ее выводить (макросом [INT_ID], который будет увеличиваться на указанное число при каждом его вызове).

    Про использование макросов [DATETOINT] и [CD_UNIXTIME] я вам ничего не говорил. Я четко обозначил, какие макросы использовать и куда их вставлять.

    Зачем вы упорно продолжаете делать лишние вещи для меня не понятно.
     
  11. elDen

    elDen Member Пользователи

    Регистрация:
    22 янв 2018
    Сообщения:
    18
    Город:
    Санкт-Петербург
    У меня возникло впечатление, что Вы меня путаете с автором этой темы, я - не автор темы. Я - не использую несколько ников на форуме. Моя задача - другая. Я просто написал в эту тему, т.к. она была предложена как схожая при создании новой. Моя задача - получить дату следующего после спарсенной даты дня. Только. Вы говорите про [INT_ID]. Он мне не нужен. Вместо него я должен установить в [CD_DATE] значение инкремента 60*60*24=86400. Ещё раз повторю, у меня есть дата, хочу получить дату следующего дня. Мне создать новую тему, чтобы никого не путать?
    Update: Попробовал конвертировать формат int в Unix Time с помощью математики, не вышло:
    Код:
    работает: [CD_DATE(1519776000|86400|{DD}.{MM}.{YYYY})] => 01.03.2018
    не работает: [CD_DATE([MATH](43159-25569)*86400[/MATH]|86400|{DD}.{MM}.{YYYY})] => 07.02.2018 (+1 день к сегодня, а ожидал +1 к 28.02.2018 (43159))
    Update2: Я даже заморочился и создал файл со всеми датами с 1900 года, но математика не проходит и в FILE:
    Код:
    Работает: [FILE(C:\dateslist-1900-2029.txt|43159|1)]  => 28.02.2018
    Не работает: [FILE(C:\Users\DANgerous\Desktop\content\dateslist-1900-2029.txt|[MATH][DATETOINT(0)]28.02.2018[/DATETOINT][/MATH]|1)] => выводится просто следующая строка 01.03.2018, 
    то же самое, если бы я оставил второй параметр без значения:
    [FILE(C:\Users\DANgerous\Desktop\content\dateslist-1900-2029.txt||1)] 
     
    Последнее редактирование: 6 фев 2018
    napserious и Root нравится это.
  12. xLime

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Добрый день.
    PHP:
    <?php

    $_POST
    [data] = "28.02.2018"//Удалить строку

    #Дата в формате ДД.ММ.ГГГГ, получаемая из CD
    $input_date strtotime($_POST[data]);

    #Дата + сутки в секундах
    $next_day $input_date+86400;

    #Вывод даты в формате ДД.ММ.ГГ
    echo date("d.m.y"$next_day); //01.03.18

    ?>
     
    Root нравится это.
  13. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Да, перепутал.

    Получить дату следующего дня:
    Код:
    [CD_DATE([CD_UNIXTIME]|86400|{DD}.{MM}.{YYYY} {HH}:{NN}:{SS})]
    Если потребуется корректировка по часовому поясу, добавьте к или отнимите от 86400 нужное количество часов (в секундах).

    С уважением к вам, Сергей.
     
    napserious нравится это.
  14. elDen

    elDen Member Пользователи

    Регистрация:
    22 янв 2018
    Сообщения:
    18
    Город:
    Санкт-Петербург
    Я правильно понял, что это выведет дату завтрашнего дня? Я указал выше, что если я хочу подставить рассчитанную математикой дату (в место где в Вашем примере [CD_UNIXTIME]), она (математика) не отрабатывает. Как мне быть? Мне нужно взять следующую дату от нужного мне дня!
    спасибо за ответ, пока не пробовал. Для выполнения этого скрипта требуется какое-то дополнительное обеспечение кроме Content Downloader?
     
  15. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Теперь вас понял (ранее по привычке итал между строк).

    Постараюсь доработать макрос в течение двух дней.
     
    elDen нравится это.
  16. xLime

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Для работы php-скрипта, нужен установленный локальный, либо внешний сервер, который может обрабатывать php-скрипты.

    1. Следуйте инструкции из системы помощи. Вам необходимо установить denwer.
    Ссылки недоступны для гостей
    2. Поместить в папку Z:\denwer\www\denwer скрипт написанный выше (открываете блокнотом и сохраняете name.php)
    3. В шаблоне вывода использовать макрос:
    Код:
    <PHP_SCRIPT=http://localhost/denwer/name.php[UTF-8]>data=[DATAENCODE]%data%[/DATAENCODE]
    </PHP_SCRIPT>
    %data% - данные, которые необходимо передать скрипту. В данном случае дату. Здесь можно указывать границу <CD_GRAN_*!>. Обратите внимание на формат даты.

    Либо ожидайте новый макрос.
     
    Root нравится это.
  17. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Код:
    [CD_DATE(04.02.18 05:33|86400|{DD}.{MM}.{YYYY} {HH}:{NN}:{SS})]
    2018-02-07_07-58-34.png
     
    elDen и xLime нравится это.
  18. elDen

    elDen Member Пользователи

    Регистрация:
    22 янв 2018
    Сообщения:
    18
    Город:
    Санкт-Петербург
    Работает! Спасибо!

    вообще я удивляюсь Вашей выносливости :) постараюсь учитывать контекст в следующий раз, чтобы не путать
     
    Root нравится это.
  19. masrub

    masrub Well-Known Member Пользователи

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    Здравствуйте, а как можно менять дату через каждые 3 ссылки для парсинга?
    Что бы получить такой вывод:
    <CD_DOCURL!>1 дата 1
    <CD_DOCURL!>2 дата 1
    <CD_DOCURL!>3 дата 1
    <CD_DOCURL!>1 дата 2
    <CD_DOCURL!>2 дата 2
    <CD_DOCURL!>3 дата 2
    <CD_DOCURL!>1 дата 3
    <CD_DOCURL!>2 дата 3
    <CD_DOCURL!>3 дата 3
     
  20. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    2021-01-30_19-33-46.png
     
    masrub нравится это.

Поделиться этой страницей