Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Программирование на Lua _ Работа С Библиотекой Операционной Системы

Автор: Nickolya 8.11.2008, 21:52

Оригинальный мануал (на английском), и не только, находится http://mydc.ru/r/?http://wiki.ptokax.ch/doku.php/scriptinghelp/osdate.

Итак, вот функции, их описание и способы применения, всё исключительно из опыта ковыряния скриптов и этого мануала, функции никогда не применияемые мною или в которых я не вижу смысла не описываю:

os.clock()
Возвращает приблизительное время в секундах использования ЦПУ программой (с момента запуска exe'шника)

os.date([format [, time]])
Функция для получения даты в определенном формате. Имеет два опциональных параметра format и time. Если оба параметра отсутствуют, то функция аналогична os.date("%c"), "%с" = "%x %X", об этом далее.

Первый параметр format имеет тип string. Опционально можно указать "!" в самом начале строки, тогда время форматируется в соответствии с универсальным глобальным временем (по Гринвичу).

Если формат состоит из "*t", то возвращается таблица со следующими полями: year (4 знака), month (1–12), day (1–31), hour (0–23), min (0–59), sec (0–61), wday (день недели, Воскресенье - 1), yday (день года) и isdst (по-моему летнее ли время, имеет тип boolean).

Код
[22:22:01] os.date("*t") = {
    ["hour"] = 22,
    ["min"] = 22,
    ["wday"] = 7,
    ["day"] = 8,
    ["month"] = 11,
    ["year"] = 2008,
    ["sec"] = 1,
    ["yday"] = 313,
    ["isdst"] = false,
}
[22:22:57] os.date("!*t") = {
    ["hour"] = 19,
    ["min"] = 22,
    ["wday"] = 7,
    ["day"] = 8,
    ["month"] = 11,
    ["year"] = 2008,
    ["sec"] = 57,
    ["yday"] = 313,
    ["isdst"] = false,
}
Как видите, с восклицательнм знаком параметры hour различаются на 3.

Если формат отличен от "*t", то строка форматируется аналогично функции С strftime. Вот обрабатываемые форматы:

Примечание: перевод докуметации без изменения, в реальности некоторые функции отличаются или вообще не работатют, вот примеры:
Цитата
os.date() = "11/08/08 23:33:15"
os.date("%A") = "Saturday"
os.date("%b") = "Nov"
os.date("%B") = "November"
os.date("%d") = "08"
os.date("%e") = "00"
os.date("%H") = "23"
os.date("%I") = "11"
os.date("%j") = "313"
os.date("%k") = "00"
os.date("%l") = "00"
os.date("%m") = "11"
os.date("%M") = "33"
os.date("%p") = "PM"
os.date("%S") = "15"
os.date("%w") = "6"
os.date("%x") = "11/08/08"
os.date("%X") = "23:33:15"
os.date("%y") = "08"
os.date("%Y") = "2008"
Как видите, не всё работает. И для доп. нагрузки на мозги код для получения такого списочка:
CODE
qwe = "\r\n"

tData = {
"",
"%A",
"%b",
"%B",
"%d",
"%e",
"%H",
"%I",
"%j",
"%k",
"%l",
"%m",
"%M",
"%p",
"%S",
"%w",
"%x",
"%X",
"%y",
"%Y",
}

for i = 1, #tData do
local s = "return os.date(\""..tData[i].."\")"
s = s:gsub("\"\"", "")
local q = assert(loadstring(s))()
q = (type(q) == "string") and string.format("%q", q) or tostring(q)
s = s:gsub("return ", "")
qwe = qwe..s.." = "..q.."\r\n"
end

Core.SendToAll(qwe)


Второй параметр, если он не указан, равен os.time(), т.е. текущему времени "эпохи", можно указать другое время, которое можно получить при помощи функции os.time(table), пример таблицы table выше.

os.difftime(t2, t1)
Возвращает количество секунд с времени t1 по время t2. В POSIX, Windows и некоторых других системах это значение равнозначно t2-t1.

os.execute([command])
Функция аналогична С функции system. Она передает команду на исполнение ОС. Возвращает статус-код, который зависит от ОС. Если команда отсутствует, тогда возвращается ненулевое значение если shell доступен, 0 в противном случае.

os.exit([code])
Вызывают функцию C exit, с опциональным кодом code,чтобы выйти из программы. По умолчанию значение code - код успешного выполнения.

os.getenv(varname)
Возвращает значение системной переменной или nil если переменная не определена.

os.remove(filename)
Удаляет файл или папку с названием filename. Папка должна быть пустой чтобы ее удалить. Если функция не может провести удаление, возвращается nil и сторка с ошибкой.

os.rename(oldname, newname)
Переименовывает файл или папку с названием oldname в newname. Если функция не может провести переименование, то возвращается nil и строку с ошибкой.

os.time([table])
Возвращает текущее время при вызове без аргументов, или время и дату, указанные в передаваемой таблице. Эта таблица должна иметь поля year, month, и day, и может иметь поля hour, min, sec, и isdst (описание этих полей см. в описании функции os.date).

Возвращаемое значание – это число, значение которого зависит от системы. В POSIX, Windows и некоторых других системах, это число соответствует количеству секунд, отсчитываемому от некоторого заданного момента времени ("эпоха"). В других системах, значение не специфицировано, и число, возвращаемое функцией time, может быть использовано только как аргумент функций date и difftime.