нужен скрипт расчета завтрашней даты

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Вот ведь вредный какой ...
найти конец текущего дня через деление на остаток и проверить диапазон секунд следуещего дня.
Получил текущее unix-время. На остаток чего его делить - часов ? секунд ? до конца текущих суток ? И как в дату то преобразовать ?


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

Что то вы совсем думать обленились, за готовым кодом - коммерческий раздел.
Epoch ℅ 86400 = текущая секунда в сутках
86400 - текущая секунда = секунд до следующих суток
Соответственно epoch + секунд до следующих суток = следующие сутки
If curent epoch > calculated = следующие сутки
Что вам нужно найти я не знаю, по этому адаптируйте под ваши хотелки


Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Всё что Вы написали понятно, но !!
Мне нужно получить завтрашнюю дату в формате Планировщика, например Sep/26/2020
Как преобразовать секунды в дату в таком формате ? Тут явно нужно писать функцию обратного преобразования от функции Epoch по Ваше ссылке.
Я такого не могу, это долго. Вот и спрашивал нет ли готовой.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

Готовой нет, возьми мою функцию UnixTimeToFormat, 1/3 с верху - и есть расчёт, остальное тебе не нужно, останется привести к формату time mikrotik


Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Спасибо, воспользовался Вашей функцией UnixTimeToFormat, почти без правок.
На входе - unix-время, на выходе - дата в формате Микротика.
Может кому пригодиться. Мне была нужна, чтобы добавлять скриптом задания в Планировщик на дни вперед.

Код: Выделить всё

# Считаются только unsigned
# условие проверки високосного года ограничено текущей соткой

:global FuncUnixDateToFormat do={
:local timeStamp $1
:local decodedLine ""
:local dateY ($timeStamp / 31436000 + 1970)
:local dateM (($dateY - 1969) / 4)
:local dateD ($timeStamp / 86400 - $dateM)
:set $dateY ($dateD / 365 + 1970)
:set $dateD ($dateD % 365)
:local months [:toarray (31,28,31,30,31,30,31,31,30,31,30,31)]
:if (($dateY % 4) = 0) do={:set ($months->1) 29}
do {
:for i from=0 to=11 do={:if (($months->$i) >= $dateD) do={:set $dateM ($i + 1); :set $dateD ($dateD +1); break;} else={:set $dateD ($dateD - ($months->$i))}}
} on-error={}
:local timeS ($timeStamp % 86400)
:local timeH ($timeS / 3600)
:local timeM ($timeS % 3600 / 60)
:set $timeS ($timeS - $timeH * 3600 - $timeM * 60)
:local mstr [:toarray {"1"="Jan"; "2"="Feb"; "3"="Mar"; "4"="Apr"; "5"="May"; "6"="Jun"; "7"="Jul"; "8"="Aug"; "9"="Sep"; "10"="Oct"; "11"="Nov"; "12"="Dec"}]
:local month ($mstr->[:tostr $dateM])
:local date ("$month/"."$[:tostr $dateD]/"."$[:tostr $dateY]")
:return $date
}

# :log info [$FuncUnixDateToFormat "1601078400"]


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить