Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    Арифметика дат?

    Арифметика дат?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Арифметика дат?, RouterOS
     
    jgellis
    Guest
    #1
    0
    06.02.2013 19:48:00
    Мне нужно выполнить арифметические операции с датами, но я не могу найти встроенный метод в ROS. Может кто-нибудь пролить свет на этот вопрос, прежде чем я начну вручную кодировать математику? Первая дата получается как [/system clock get date]. Я хочу добавить либо стандартное время (например, 2d12:10:09 или 36:10:09 или 12:10:09), либо просто количество дней (например, 2d или 2). Я также пробовал использовать :totime и конкатенацию, но ничто не дает желаемого результата. Например, если выполнить это на 26 февраля 2013 года, добавление [/system clock get date] и 2d12:00:00 должно вернуть фев/28/2013, если это было сделано до полудня, или мар/01/2013, если это было запущено на или после полудня. У меня нет проблем с добавлением времени к времени вышеописанными способами. >:put ([/system clock get time]+("72:53:27"))
    3d11:37:51 Вот несколько примеров входных данных и получаемых результатов/ошибок:
    > :put ([/system clock get date])
    фев/06/2013
    > :put ([/system clock get date]+"2d")
    Ошибка скрипта: нельзя складывать строку и строку
    > :put ([/system clock get date]+"2")
    Ошибка скрипта: нельзя складывать строку и строку
    > :put ([/system clock get date]+2)
    Ошибка скрипта: нельзя складывать строку и интервал времени
    > :put ([/system clock get date]+2d)
    Ошибка скрипта: нельзя складывать строку и IP-адрес
    > :put ([/system clock get date]+2d12:10:09)
    Ошибка скрипта: нельзя складывать строку и IP-адрес
    > :put ([/system clock get date]+36:10:09)
    Ошибка скрипта: нельзя складывать строку и IP-адрес
    > :put ([/system clock get date]+"2d12:10:09")
    Ошибка скрипта: нельзя складывать строку и строку
    > :put ([/system clock get date]+"36:10:09")
    Ошибка скрипта: нельзя складывать строку и строку
    > :put ([/system clock get date]+[:totime [/system clock get time]])
    Ошибка скрипта: нельзя складывать строку и IP-адрес
    > :put ([/system clock get date].[:totime [/system clock get time]])
    фев/06/201311:29:09
     
     
     
    amitkw
    Guest
    #2
    0
    24.10.2017 23:16:00
    Кто-нибудь уже нашёл решение?
     
     
     
    eguun
    Guest
    #3
    0
    17.05.2020 07:43:00
    Этот пост изначально был опубликован в 2013 году. Сейчас 2020-й, и я тоже был бы рад рабочему решению.
     
     
     
    Jotne
    Guest
    #4
    0
    17.05.2020 07:52:00
    Я выложил решение в этой теме. http://forum.mikrotik.com/t/i-did-it-script-to-compute-unix-time/68576/1 У вас теперь есть скрипт, который конвертирует дату в epoch time, чтобы можно было делать вычисления. Не самое оптимальное решение, но должно работать. Я отправил письмо в support@mikrotik.com с просьбой улучшить обработку дат, потому что сейчас там полный бардак. Если больше людей напишут им, то, возможно, это появится в v7.
     
     
     
    eguun
    Guest
    #5
    0
    17.05.2020 08:04:00
    Спасибо, да, мы можем: 1- конвертировать дату/время Mikrotik в epoch (это внутри вашей темы), 2- применять арифметические операции к epoch, 3- конвертировать из epoch в дату/время Mikrotik (я не знаю о существовании такого скрипта). Вы знаете какой-нибудь скрипт, который конвертирует из epoch в дату/время Mikrotik? Спасибо.
     
     
     
    Jotne
    Guest
    #6
    0
    17.05.2020 08:32:00
    Не видно, но вроде бы не должно быть сложно сделать. Проблема в том, что MT использует разные формы логирования дат. Если время в логе меньше 24 часа (или это от текущей даты, не уверен), то используется только время: 13:56:28. Более старые логи с месяцем и днем, но без года!! Например, may/16 21:56:18. Печать системного времени показывает: 10:29:40 дата: may/17/2020. Последний вариант лучше, но использование только названия месяца усложняет всё. Правильный/лучший вариант – 17/05/2020 10:29:40, полный формат, только числа и все логи в UTC или Zulu формате.
     
     
     
    eguun
    Guest
    #7
    0
    17.05.2020 08:40:00
    Мне будет интересно увидеть такую простую функцию, которая принимает на вход эпоху и выдает формат времени, который можно будет связать с форматом mmm/dd или mmm/dd/yyyy, используемым в Mikrotik, даже если (согласен с тобой) это не самый надежный и лучший формат. Это, наконец, позволит реализовать этот обходной путь, который в идеале не пришлось бы создавать на стандартной Linux-машине.
     
     
     
    mutluit
    Guest
    #8
    0
    17.05.2020 10:38:00
    Самое гибкое решение — использовать стандартное unix-время (то есть время в секундах с 1/1/1970). Просто концепт: функции конвертации: tm = datetime datetime = tm Арифметические функции: tm = tm + x tm = tm - x, где x — количество секунд.

    Вижу, что уже есть **:totime** и арифметические операции в скриптах.

    Смотри также:
    https://wiki.mikrotik.com/wiki/Manual:Scripting#Arithmetic_Operators
    http://forum.mikrotik.com/t/convert-string-to-time-value/68658/1
    и @Jotne уже выложил эту ссылку:
    http://forum.mikrotik.com/t/i-did-it-script-to-compute-unix-time/68576/1
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры