1. ホーム
  2. スクリプト・コラム
  3. ルア

Luaチュートリアル(XVI)。システムライブラリ (os ライブラリ)

2022-02-13 11:40:33

Luaは高い移植性を確保するために設計されているため、標準ライブラリでは、特にOSに関連する機能はごくわずかしか提供されていません。しかし、LuaはPosixライブラリのような拡張機能も提供しています。ファイル操作については、os.rename関数とos.remove関数のみが提供されています。
1. 日付と時刻。

Luaでは、timeとdateという関数がすべての日付と時刻の関数を提供します。

time関数が引数なしで呼ばれた場合、現在の日付と時刻を数値で返します。引数としてテーブルを指定して呼び出すと、そのテーブルに記述された日時を示す数値が返される。テーブルの有効なフィールドは次のとおりである。

print(os.time{year = 1970, month = 1, day = 1, hour = 8, min = 0}) -- 北京は東の8番目の地域にあるので、UTCでは時間は0に等しくなります。

print(os.time()) -- 現在時刻が1970-1-1 00:00:00から経過した秒数を出力します。出力値は、1333594721です。

関数dateはtimeの逆関数であり、timeが返す数値をより高度な読みやすい形式に変換することができる。その最初の引数は、希望する日付の戻り形式を示すフォーマットされた文字列で、その2番目の引数は日付と時間の桁で、デフォルトは現在の日付と時間です。例えば

コピーコード コードは以下の通りです。

dd = os.date("*t",os.time()) -- If the formatting string is "*t", the function will return the date object in table form. If it is "! *t", then it means the UTC time format.
print("year = " . dd.year)
print("month = " . dd.month)
print("day = " . dd.day)
print("weekday = " . dd.day) - the first day of the week, with Sunday being the first day
print("yearday = " . dd.yday) -- the first day of the year, January 1 is the first day
print("hour = " . dd.hour)
print("min = " . dd.min)
print("sec = " . dd.sec)
--[[
year = 2012
month = 4
day = 5
weekday = 5
yearday = 96
hour = 11
min = 13
sec = 44
--]]

    date関数の書式識別子は、Cランタイムライブラリのstrftime関数と同じで、次の表を参照してください。

コピーコード コードは以下の通りです。

print(os.date("%Y-%m-%d")) --output 2012-04-05

    os.clock()という関数は、CPU時間の記述を返すもので、通常、コードの実行効率を計算するために使われる。例えば
コピーコード コードは以下の通りです。

local x = os.clock()
local s = 0
for i = 1, 10000000 do
    s = s + i
end
print(string.format("elapsed time: %.2f\n", os.clock() - x))

-- The output is.
--elapsed time: 0.21

2. その他のシステムコール

    関数 os.exit() は、現在のプログラムの実行を中止する。関数 os.getenv() は、環境変数の値を取得します。たとえば、以下のようになります。

コピーコード コードは以下の通りです。

    print(os.getenv("PATH")) -- Returns nil if the environment variable does not exist.
    The os.execute function is used to execute commands related to the operating system, such as.
    os.execute("mkdir " . "hello")