<< Click to Display Table of Contents >> Navigation: Modbus Universal MasterOPC Server > Руководство по языку Lua 5.1 > Библиотеки функций > Библиотека TIME > Функции работы со временем |
Параметр функции: строковое представление локального времени в указанном формате.
Возвращает 8-байтовый массив (байты 0-3 – секунды с 1 января 1970г., байты 4-6 – миллисекунды, байт 7 – 0x0a).
Пример
ts = time.StringToTimeStamp("2010-05-03 12:34:45.100");
Эта функция является обратной по отношению к time.StringToTimeStamp .
Параметр функции: 8-байтовый массив (байты 0-3 – секунды с 1 января 1970г., байты 4-6 – миллисекунды, байт 7 – 0x0a).
Возвращает строковое представление локального времени в указанном формате.
Пример
ts = time.StringToTimeStamp("2010-05-03 12:34:45.100");
stringts = time.TimeStampToString(ts);
Параметры функции: время в формате os.time и число миллисекунд. Время в формате os.time может быть сформировано функцией time.PackTime, time.TimeNow, time.StringToTimeStamp.
Возвращает 8-байтовый массив (байты 0-3 – секунды с 1 января 1970г., байты 4-6 – миллисекунды, байт 7 – 0x0a).
Пример
timesec = os.time{year=2010,month=05,day=03,hour=12,min=34,sec=45};
timemsec=200;
ts = time.TimeToTimeStamp(timesec,timemsec);
Эта функция является обратной по отношению к time.TimeToTimeStamp .
Параметр функции: 8-байтовый массив (байты 0-3 – секунды с 1 января 1970г., байты 4-6 – миллисекунды, байт 7 – 0x0a).
Возвращает время в формате os.time и число миллисекунд.
Пример
timesec = os.time{year=2010,month=05,day=03,hour=12,min=34,sec=45};
timemsec=200;
ts = time.TimeToTimeStamp(timesec,timemsec);
timesec,timemsec = time.TimeStampToTime(ts);
Возвращает текущее системное время.
Пример
timesec= time.TimeNow( );
Возвращает текущее время в формате временной метки (дата-время + миллисекунды).
Собирает время из отдельных элементов.
Параметры функции: шесть числовых элементов (год, месяц, день, час, минута, секунда).
Возвращает код ошибки (0, если ошибки нет) и сформированное значение времени в формате os.time - количество секунд с 1 января 1970 года по UTC. В случае ошибки возвращает 1 января 1970 года).
Примечание. Обратите внимание что с помощью данной функции формируется время в формате UTC. Если вам нужно получить локальное время (например для отправки его в прибор), то прибавьте нужное количество часов с помощью функции time.TimeAddHour. Получить смещение текущего часового пояса компьютера можно с помощью функции time.OffsetLocalTime. Но если результат данной функции предназначен для формирования метки времени OPC переменной, функцией time.TimeToTimeStamp, то переводить время в локальное не нужно - данная функция требует время в формате UTC.
Коды ошибок:
0 – нет ошибки;
2 – ошибка ввода года (от 1970 до 2037);
3 – ошибка ввода месяца (от 1 до 12);
4 – ошибка ввода дня (от 1 до 31);
5 – ошибка ввода часа (от 0 до 23);
6 – ошибка ввода минуты (от 0 до 59);
7 – ошибка ввода секунды (от 0 до 59).
Пример 1
err,timesec = time.PackTime(2012,5,3,12,31,45);
--err=0, timesec имеет дату 3 мая 2012 г., 12:31:45
Пример 2
err,timesec = time.PackTime(2011,2,29,12,31,45);
--err=4 (29 февраля в 2011 году нет), timesec имеет дату 01.01.1970
Эта функция является обратной по отношению к time.PackTime , т.е. она разбирает локальное время на отдельные элементы.
Параметр функции: время в формате os.time .
Возвращает 6-байтовый массив: год (1), месяц (2), день (3), час (4), минута (5), секунда (6).
Пример
err,timesec = time.PackTime(2012,5,3,12,31,45);
w={};
w=time.UnpackTime(timesec);
--w[1]=2012, w[2]=5, w[3]=3, w[4]=12, w[5]=31, w[6]=45
Функция преобразует время в формате os.time в строку.
Пример
local Now=time.TimeNow();
local str=time.TimeToString(Now );
-- переменная str содержит строковое представление текущего времени
Функция прибавляет к переменной времени заданное количество секунд.
Параметры функции: первый параметр – время в формате os.time , второй – число прибавляемых секунд (знаковое целое число).
Пример 1
local Now=time.TimeNow();
local dt=time.TimeAddSec(Now,10);
-- значение переменной dt на 10 секунд больше текущего времени
Пример 2
local Now=time.TimeNow();
local dt=time.TimeAddSec(Now,-10);
-- значение переменной dt на 10 секунд меньше текущего времени
Функция прибавляет к переменной времени заданное количество минут.
Параметры функции: первый параметр – время в формате os.time , второй – число прибавляемых минут (знаковое целое число).
Пример
local Now=time.TimeNow();
local dt=time.TimeAddMin (Now,10);
-- значение переменной dt на 10 минут больше текущего времени
Функция прибавляет к переменной времени заданное количество часов.
Параметры функции: первый параметр – время в формате os.time , второй – число прибавляемых часов (знаковое целое число).
Пример
local Now=time.TimeNow();
local dt=time.TimeAddHour (Now,5);
-- значение переменной dt на 5 часов больше текущего времени
Функция прибавляет к переменной времени заданное количество дней.
Параметры функции: первый параметр – время в формате os.time , второй – число прибавляемых дней (знаковое целое число).
Пример
local Now=time.TimeNow();
local dt=time.TimeAddDay (Now,1);
-- значение переменной dt на 1 день больше текущего времени
Функция прибавляет к переменной времени заданное количество месяцев.
Параметры функции: первый параметр – время в формате os.time , второй – число прибавляемых месяцев (знаковое целое число).
Функция учитывает количество дней в месяцах. Если в результате прибавления месяца получается несуществующая дата, то возвращается последний день месяца. Например, если к 31 января 2012 года прибавить 1 месяц, то функция вернет 29 февраля 2012 года.
В остальных случаях функция возвращает то же число месяца. То есть, если к 29 февраля 2012 года прибавить 1 месяц, функция вернет 29 марта 2012 года.
Пример 1
local err,Time=time.PackTime(2012,2,29,0,0,0);
local dt=time.TimeAddMonth(Time,1);
-- дата в значении переменной dt – 29 марта 2012 года
Пример 2
local err,Time=time.PackTime(2012,1,31,0,0,0);
local dt=time.TimeAddMonth(Time,1);
--дата в значении переменной dt – 29 февраля 2012 года
Функция прибавляет к переменной времени заданное количество лет.
Параметры функции: первый параметр – время в формате os.time , второй – число прибавляемых лет (знаковое целое число).
Функция учитывает количество дней в месяцах – алгоритм такой же, как и в функции time.TimeAddMonth .
Пример 1
local err,Time=time.PackTime(2012,1,31,0,0,0);
local dt=time.TimeAddYear (Time,1);
--дата в значении переменной dt – 31 января 2013 года
Пример 2
local err,Time=time.PackTime(2012,2,29,0,0,0);
local dt=time.TimeAddYear (Time,1);
-- дата в значении переменной dt – 28 февраля 2013 года
Функция предназначена для вывода значения смещения текущего локального времени компьютера. В первую очередь функция предназначена для преобразования времени из UTC в локальное и наоборот - с помощью функции time.TimeAddHour.
Пример
--необходимо сформировать время из элементов, и отправить в прибор в локальном формате
local TimeUTC=time.PackTime(2017,5,1,0,0,0 ); --получаем время в UTC формате
local HourOffset=time.OffsetLocalTime( ); --получаем смещение времени
local TimeLocal=time.TimeAddHour(TimeUTC,HourOffset); --прибавляем смещение - получаем локальное время
--переменная TimeLocal будет содержать дату 2017-5-1 3:00:00