Здравствуйте, решил переходить с qpile на qlua и сразу же возникла следующая проблема: на qpile я беру время сервера таким образом
Код
SERVERTIME = GET_INFO_PARAM("SERVERTIME")
Время получается в формате чч:мм:сс, например 14:36:48, затем я преобразую это время в число
Код
time = SUBSTR(SERVERTIME,0,2) & SUBSTR(SERVERTIME,3,2) & SUBSTR(SERVERTIME,6,2)
Получается time = 143648, далее при использовании этой переменной я добавляю "+0", например
Код
time+0 > 130000
Вопрос, как мне в qlua привести время к такому же формату? Время с сервера я беру таким образом
Код
servertime = getInfoParam("SERVERTIME")
А дальше засада, не пойму как перевести к числовому виду и как преобразовать потом полученное значение в число.
Пользователь
Сообщений: Регистрация: 30.01.2015
10.11.2016 21:55:48
Пасхалочка для Алексея Иванникова:
Пользователь
Сообщений: Регистрация: 23.08.2016
14.11.2016 21:11:35
Спасибо за ссылку на статью, но в ней ничего нужного не нашел. Если кому интересно решил проблему следующим образом:
Код
servertime = getInfoParam("SERVERTIME") -- Текущее время с сервера в формате ЧЧ:ММ:СС
servertime = string.sub(servertime, 1, 2)..string.sub(servertime, 4, 5)..string.sub(servertime, 7, 8) -- Перевод времени в числовой формат
servertime = tonumber(servertime) -- Преобразование в число
Пользователь
Сообщений: Регистрация: 22.02.2023
23.05.2023 20:50:46
Время сервера передается без начального нуля, поэтому предложенный код до 10 часов утра не работает. Вот немного доработанный вариант:
Код
-- Время сервера в числовой формат.
local sT = getInfoParam("SERVERTIME") -- Время сервера в формате Ч:ММ:СС или ЧЧ:ММ:СС
function DToN (s,i,j)
return tonumber(string.sub(s, i, j)) -- Перевод цифр в числа.
end
srvTime = DToN(sT,-2,-1) + DToN(sT,-5,-4)*60 + DToN(sT,-8,-7)*3600 -- Количество секунд с начала суток.
Всё пройдет. Но это не точно.
Пользователь
Сообщений: Регистрация: 08.04.2021
18.08.2023 09:49:46
Добрый день, есть рабочий код для вывода метки на график, но он работает только с 10 утра, если запускается до 10 утра то выдает ошибку в пункте 2 - attempt to concatenate a nil value (local 'm')
1. local h,m,t = string.match(getInfoParam("SERVERTIME"),"(%d%d)%p(%d%d)%p(%d%d)") 2. local time_pos = h..m..t
Не подскажете как поправить вывод, если это реально? Спасибо.
%x: (где x - не алфавитно-цифровой символ) представляет символ x. Это стандартный способ кодирования магических символов. Любой не алфавитно-цифровой символ (включая все знаки пунктуации, даже не магические) могут предваряться '%', когда используются для представления себя в шаблоне.
Получаю число типа такого: 202305122200 - где первые четыре числа - год, потом два - месяц, потом 2 - день, следующие два - час, а последние два - минуты.
Немного излагал это в видео на своем канале: И в статье:
Пользователь
Сообщений: Регистрация: 30.01.2015
28.08.2023 17:56:31
так лучше : local t = dat a:T(i) metka = t['min']+100*( t['hour'] +100*( t['day'] +100*( t['month'] +100*t['year']*)))
Пользователь
Сообщений: Регистрация: 30.01.2015
28.08.2023 17:59:02
вместо 4 констант надо одну. Но лучше не соединять дату и время так как при 32 бит будет неточно. Кроме того, дата не меняется в течении торгового дня.
Пользователь
Сообщений: Регистрация: 30.01.2015
28.08.2023 18:02:02
я делаю так так лучше : local t = dat a:T(i) YYMMDD = t.day +100*( t.month +100*t.year) HHMMSS =t.sec +100*( t.min +100* t.day)