1. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!
    Скрыть объявление

Получить дату

Тема в разделе "Техническая поддержка", создана пользователем rumos, 20 мар 2017.

  1. rumos

    rumos A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    5 фев 2016
    Сообщения:
    26
    Симпатии:
    4
    Добрый день.
    Пытаюсь через "Макросы шаблонов" получить текущую дату. По аналогии с $datefile.format() прописАл в дополнительных настройках строку
    Код:
    [% USE datenow = date(format = '%d/%b/%Y', locale = 'C') -%]
    Затем пробовал подставить в шаблоне задания
    [​IMG]
    Но в файле результатов слово "сегодня" заменяется на "$datenow.format()", а не на текущую дату. И еще вопрос, как можно получить вчерашнюю дату? Или, в общем случае, произвольную (например, "неделю назад" или "через десять дней")?
     
  2. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    Добрый день.
    Через Конструктор результатов таким образом не получится это сделать - там пока нет поддержки переменных (но есть в планах). Как вариант - делать замену в формате результата шаблонизатором:
    Код:
    [% p1.pdate.replace('сегодня', datenow.format()) %]
    А вместо макросов шаблонов проще использовать tools.js и примерно такую JavaScript функцию:
    Код:
    Tools.prototype.getDate = function(delta) {
        var date = new Date();
        date.setDate(date.getDate() + delta);
        return date.toDateString();
    }
    Пример использования (дата заменяется на дату - 5 дней):
    [​IMG]
     
    relay и rumos нравится это.
  3. rumos

    rumos A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    5 фев 2016
    Сообщения:
    26
    Симпатии:
    4
    Добавил в редактор JavaScript функцию
    Код:
    function Tools() {
    }
    
    Tools.prototype.sum = function(a, b) {
        return a + b;
    }
    
    Tools.prototype.eval = function(code) {
        return eval(code);
    }
    
    Tools.prototype.removeWWW = function(domain) {
        return domain.replace(/^www\./i, '');
    }
    
    Tools.prototype.getDate = function(delta) {
        var date = new Date();
        date.setDate(date.getDate() + delta);
        return date.toDateString();
    }
    
    new Tools; //return Tools object
    
    Но замена через Override option не проходит, остаётся "сегодня" и "вчера"
    [​IMG]
    Так тоже не получается (только "сегодня")
    [​IMG]
    На всякий случай, это парсер отсюда переделывать пытаюсь.
     
  4. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    На первом скрине ошибка: Формат результата для каждого парсера может быть только один, если их несколько то работать будет только один из них.
    На втором с виду все правильно. Проверяйте регулярку, регистр получаемой подстроки...
    Как я уже говорил, все делается шаблонизатором:
    [​IMG]
     
    rumos нравится это.
  5. rumos

    rumos A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    5 фев 2016
    Сообщения:
    26
    Симпатии:
    4
    Спасибо за науку. В тестовом задании всё работает.
    [​IMG]
    И регулярка правильная и подстрока заменяется. Но попытка применить к полному шаблону не увенчалась успехом. Там несколько этапов, пробовал делать подстановку даты в разных местах. Попытаюсь спросить в той теме.
     

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