myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Работа С Библиотекой Операционной Системы, Lua 5.1.x

Теги
Nickolya
сообщение 8.11.2008, 21:52
Сообщение #1


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Оригинальный мануал (на английском), и не только, находится тут.

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

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. Вот обрабатываемые форматы:
  • "%a" - Сокращенный день недели. Пример: Thu.
  • "%A" - День недели полностью. Пример: Thursday.
  • "%b" - Сокращенное название месяца. Пример: Sep.
  • "%B" - Полное название месяца. Пример: September.
  • "%d" - Двухзначный день месяца начанающийся с 0 если цифра одна. Пример: 09.
  • "%e" - День месяца. Пример: 9.
  • "%H" - Двухзначное число часов начанающиеся с 0 если цифра одна. Пример: 16.
  • "%I" - Двухзначное число часов в 12-часовом формате начанающиеся с 0 если цифра одна. Пример: 04.
  • "%j" - Трехзначное число дней с начала года начанающиеся с 0 если цифра одна. Пример: 040.
  • "%k" - Двухзначное число часов. Пример: 9.
  • "%l" - Двухзначное число часов в 12-часовом формате . Пример: 4.
  • "%m" - Двухзначный месяц года начанающиеся с 0 если цифра одна. Пример: 09.
  • "%M" - Двухзначное число минут начанающиеся с 0 если цифра одна. Пример: 02.
  • "%p" - AM или PM.
  • "%S" - Двухзначное число секунд начанающиеся с 0 если цифра одна. Пример: 04.
  • "%w" - Номер дня недели в пределе от 0 до 6, где 0 - Sunday. Пример: 0.
  • "%x" - Стандартный формат даты. Для большинства языков это то же, что и "%B %d, %Y". Пример: September 06, 2002.
  • "%X" - Стандартный формат времени. Для большинства языков это то же, что и "%I:%M %p". Пример: 04:31 PM.
  • "%y" - Двухзначный год начанающиеся с 0 если цифра одна. Пример: 01.
  • "%Y" - Четырехзнчный год. Пример: 2001.

Примечание: перевод докуметации без изменения, в реальности некоторые функции отличаются или вообще не работатют, вот примеры:
Цитата
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.


Спасибо сказали:
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Как разархивировать архив библиотекой
Ptokax/Windows
2 Tsd 5 956 19.11.2016, 20:20 Посл. сообщение: Tsd
No New Posts Как сделать автозапуск verlihub при загрузки системы?
10 roflDDDD 15 816 30.10.2010, 14:50 Посл. сообщение: переподвыподверт
No New Posts От: Как сделать автозапуск verlihub при загрузки системы?
От темы с ID: 3832
2 sania 6 698 28.8.2010, 0:37 Посл. сообщение: sania
No New Posts Вызов sр команд системы из скрипта
собсно как?
2 MEXAHuK 6 754 21.2.2010, 21:03 Посл. сообщение: MEXAHuK
No new Покер моя работа! Лучшая покерная школа оплатит вашу игру!
45 King 46 383 17.1.2010, 16:59 Посл. сообщение: Nickolya
No New Posts Topic has attachmentsРабота чата
Юзеры не могут общаться, не расшрарив файлы
5 Nenomernoj 9 360 26.10.2009, 21:30 Посл. сообщение: Nenomernoj
No New Posts Работа С *.тхт Файлами Через Меню
Управление и редактирование *.тхт файлов
6 Strannik 12 343 13.1.2009, 21:11 Посл. сообщение: Strannik

 



RSS Сейчас: 23.12.2024, 8:31