Переменная времени работы скрипта.



  • В отчёте работы скрипта есть время работы. Можно его вызвать в переменную или лог? Без функции OnApplicationStart и вычитания дат new Date(); ?



  • @Fox said in Переменная времени работы скрипта.:

    Без функции OnApplicationStart и вычитания дат new Date(); ?

    Нет, только так, причем переменная должна быть глобальной.



  • Захотел реализовать в админке счётчик времени работы каждого потока. Точнее определённой функции у каждого потока.
    Поставил перед заходом в цикл нужной мне функции маркер времени:

    VAR_TM = new Date();
    

    А уже при срабатывании условий в функции ставится новый маркер времени и вычитается из старого:

    VAR_TM2 = new Date();
    VAR_TIME_JOB_0 = ((VAR_TM2) - (VAR_TM));
    

    В переменной TIME_JOB_0 получаю миллисекунды прошедшие с одного маркера до другого.
    Дак вот из этих миллисекунд надо получить время чч:мм:сс

    Пробывал через функции получить часы, минуты и секунды

    VAR_H_JT = (VAR_TIME_JOB_0).getHours();
    VAR_M_JT=(VAR_TIME_JOB_0).getMinutes();
    VAR_S_JT=(VAR_TIME_JOB_0).getSeconds();
    

    Ругается ошибкой : TypeError: Result of expression '(VAR_TIME_JOB_0).getSeconds' [undefined] is not a function

    Пробывал перевести полученные миллисекунды в дату и снова получить функцией время..

    VAR_TM2 = new Date();
    VAR_TIME_JOB_0 = ((VAR_TM2) - (VAR_TM));
    VAR_TIME_JOB = new Date(VAR_TIME_JOB_0);
    VAR_H_JT = (VAR_TIME_JOB).getHours();
    VAR_M_JT=(VAR_TIME_JOB).getMinutes();
    VAR_S_JT=(VAR_TIME_JOB).getSeconds();
    

    Но так как в переменной TIME_JOB теперь дата Thu Jan 01 1970 05:06:17 GMT+0500 (RTZ 4) то функция получает значения 5 часов, 6 минут и 17 секунд. Хотя по факту прошло 337951 миллисекунд, тоесть 5 минут 38 секунд.

    Пробовал тупым делением, когда полученные миллисекунды делил на 1000 (для секунд), на 60000 (для минут).. В итоге мог получить значение вида 1 час 70 минут 4200 секунд..

    Голова уже не варит, такой простой косяк, а упёрся и не даётся..



  • Через три звезды колена сделал.. Тупо через деление..

    VAR_TM2 = new Date();
    VAR_TIME_JOB_0 = ((VAR_TM2) - (VAR_TM))/1000;
    VAR_H_JT = Math.floor((VAR_TIME_JOB_0)/3600)
    VAR_M_JT = Math.floor(VAR_TIME_JOB_0/60)-((VAR_H_JT)*60)
    VAR_S_JT = Math.floor(VAR_TIME_JOB_0)-((Math.floor(VAR_TIME_JOB_0/60))*60)
    


  • @Fox так же пришлось реализовать. Не красиво, но работает. Через математический лес



  • @Viktor said in Переменная времени работы скрипта.:

    @Fox так же пришлось реализовать. Не красиво, но работает. Через математический лес

    Согласен. Главное что работает :)
    Добавил условие отображение минут, если скрипт работает больше минуты. И часов, если скрипт работает больше часа.

    VAR_TM2 = new Date();
    VAR_TIME_JOB_0 = ((VAR_TM2) - (VAR_TM))/1000;
    VAR_H_JT = Math.floor((VAR_TIME_JOB_0)/3600)
    VAR_M_JT = Math.floor(VAR_TIME_JOB_0/60)-((VAR_H_JT)*60)
    VAR_S_JT = Math.floor(VAR_TIME_JOB_0)-((Math.floor(VAR_TIME_JOB_0/60))*60)
    if (VAR_TIME_JOB_0 > 0) VAR_TIME_JOB = VAR_S_JT + "с"
    if (VAR_TIME_JOB_0 > 60) VAR_TIME_JOB = VAR_M_JT + "м  " + VAR_S_JT + "с"
    if (VAR_TIME_JOB_0 > 3600) VAR_TIME_JOB = VAR_H_JT + "ч  " + VAR_M_JT + "м  " + VAR_S_JT + "с"
    

    Можно ещё добавить отображение нуля до 10..Чтобы отображалось 08, а не просто 8.
    Но думаю это лишнее..



  • @Fox просто сделал, чтобы скрипт отрабатывал раз в сутки. Так же вычитание дат в мили, потом математика, получаю часы. Если большеравно 24.... и т.д



  • @Viktor Чтобы скрипт отрабатывал раз в сутки есть проще способ, у меня много что на нём основано.

    1. Ставишь перед циклом временной маркер
    VAR_DATE_OLD = new Date()
    
    1. Потом в цикле Выполнить код
    VAR_DATE_NEW = new Date()
    VAR_DATE = ((VAR_DATE_NEW) - (VAR_DATE_OLD)) / 60000
    

    /60000 мне нужны были минуты. Можно было разделить на 3600000 если нужны часы.
    3. Далее ставишь IF

    [[DATE]] > 5
    

    Чтобы раз в 5 минут выполнялся IF
    4. В этом IF в конце обновляешь временной маркер

    VAR_DATE_OLD = new Date()
    


  • @Fox я в базу переписываю последнее время запуска. и от него пляшу. При загрузке берет значение из базы, ну и соответственно к выводу приходит, работать ему, или нет.Математика точно такая же



  • Не подскажите код, как обычное время переводить в секунды.
    Пример
    5:24 и вот его хотелось бы в секунды. примерно.
    Заранее спс



  • @pavelbond Для работы со временем теперь есть отдельный модуль "дата и время".

    5:24 и вот его хотелось бы в секунды. примерно.

    Действие Создать Дату, затем Дату в Миллисекунды ну и раздели полученный результат на 1000.



  • Еще вопрос а как в басе делить?
    Пробовал делать в переменной поставить знак деление( но у вы(
    Так бы так хотелось чтоб внутри все системы был конвертер) без костылей так сказать)
    Спасибо за ответ



  • @pavelbond Тема называется "Переменная времени работы скрипта.", причём тут ваш вопрос?

    как в басе делить?
    Пробовал делать в переменной поставить знак деление( но у вы(

    0_1534449480425_на форум 78.png

    0_1534449490389_на форум 77.png


    Так бы так хотелось чтоб внутри все системы был конвертер) без костылей так сказать)

    Конвертер чего? И про какие костыли идёт речь?



  • @fox
    Спасибо огромное, до этого вопроса делал так раньше( но ничего не вышло((
    возможно не поставил experssion.
    Спасибо тебе огромное за помощь.
    Обычно все с начало делаю методом тыка и читаю форум) а потом тока задаю вопросы)
    Кстати проценты так же делаются???
    От информации и от не привычки голова кругом идет



  • @Fox Делаю как написано, выдаёт ошибку в 1 действии если с = new Date() если убираю = new Date() выдаёт ошибку во 2 действии VAR_DATE_OLD



  • @19717 said in Переменная времени работы скрипта.:

    @Fox Делаю как написано, выдаёт ошибку в 1 действии если с = new Date() если убираю = new Date() выдаёт ошибку во 2 действии VAR_DATE_OLD

    Чегось? Я же выше писал, что сейчас проще использовать модуль "Дата и время"



  • This post is deleted!


  • @19717 said in Переменная времени работы скрипта.:

    @Fox Уже кучу вариантов испробывал, но что-то не получается. Помогите пожалуйста разобраться. Вот 1568376464507-1568060461320-project-новый.xml

    а что вы пытаетесь сделать?



  • @Fox Вообще то хочу сделать, чтобы через определённое время скачивался файл, то есть выставить 10 минут и чтобы он через каждые 10 минут скачивался



  • @19717 said in Переменная времени работы скрипта.:

    @Fox Вообще то хочу сделать, чтобы через определённое время скачивался файл, то есть выставить 10 минут и чтобы он через каждые 10 минут скачивался

    установите действие "сон" со значением 1000*60*10. Десять в конце означает минуты


Log in to reply