この初版はLua 5.0向けに書かれたものです。後のバージョンでも大部分は関連性がありますが、いくつかの違いがあります。
第4版はLua 5.3を対象としており、Amazonやその他の書店で入手できます。
この本を購入することで、Luaプロジェクトの支援にもなります。
![]() |
LuaプログラミングLua | ![]() |
第III部 標準ライブラリ 第22章 オペレーティングシステムライブラリ |
Luaでは、time
とdate
という2つの関数が、すべての日付と時刻のクエリを行います。
引数なしで呼び出された場合、time
関数は、現在の日付と時刻を数値としてコード化して返します。(ほとんどのシステムでは、この数値は、あるエポックからの秒数です。)テーブルとともに呼び出された場合、そのテーブルで記述された日付と時刻を表す数値を返します。このような日付テーブルには、次の重要なフィールドがあります。
year | 完全な年 |
month | 01-12 |
day | 01-31 |
hour | 00-23 |
min | 00-59 |
sec | 00-59 |
isdst | サマータイムの場合、trueとなるブール値 |
最初の3つのフィールドは必須です。その他のフィールドは、指定されていない場合は正午 (12:00:00) にデフォルト設定されます。リオデジャネイロ(グリニッジの西3時間)で実行されているUnixシステム(エポックが1970年1月1日00:00:00 UTC)では、次の例があります。
-- obs: 10800 = 3*60*60 (3 hours) print(os.time{year=1970, month=1, day=1, hour=0}) --> 10800 print(os.time{year=1970, month=1, day=1, hour=0, sec=1}) --> 10801 print(os.time{year=1970, month=1, day=1}) --> 54000 (obs: 54000 = 10800 + 12*60*60)
date
関数は、その名前にもかかわらず、time
関数の逆のようなものです。日付と時刻を表す数値を、より高レベルの表現に変換します。その最初のパラメータは、必要な表現を記述するフォーマット文字列です。2番目は数値による日付と時刻で、デフォルトでは現在の日付と時刻です。
日付テーブルを生成するには、フォーマット文字列"*t"
を使用します。たとえば、次のコード
temp = os.date("*t", 906000490)は、次のテーブルを生成します。
{year = 1998, month = 9, day = 16, yday = 259, wday = 4, hour = 23, min = 48, sec = 10, isdst = false}
os.time
で使用されるフィールドに加えて、os.date
によって作成されたテーブルは、曜日(wday
、1が日曜日)と年の日(yday
、1が1月1日)も与えることに注意してください。他のフォーマット文字列の場合、os.date
は日付を文字列としてフォーマットします。これは、フォーマット文字列のコピーであり、特定のタグが時刻と日付に関する情報に置き換えられたものです。すべてのタグは、次の例のように、`%
`とそれに続く文字で表されます。
print(os.date("today is %A, in %B")) --> today is Tuesday, in May print(os.date("%x", 906000490)) --> 09/16/1998すべての表現は、現在のロケールに従います。したがって、ブラジル・ポルトガル語のロケールでは、
%B
は"setembro"
となり、%x
は"16/09/98"
になります。次の表は、各タグ、その意味、および1998年9月16日(水曜日)の23:48:10の値を示しています。数値の場合、表には可能な値の範囲も示しています。
%a | 曜日の省略名(例:Wed ) |
%A | 曜日の完全名(例:Wednesday ) |
%b | 月の省略名(例:Sep ) |
%B | 月の完全名(例:September ) |
%c | 日付と時刻(例:09/16/98 23:48:10 ) |
%d | 月の日 (16 ) [01-31] |
%H | 24時間制を使用した時間(23 )[00-23] |
%I | 12時間制を使用した時間(11 )[01-12] |
%M | 分 (48 ) [00-59] |
%m | 月 (09 ) [01-12] |
%p | "am" または"pm" (pm ) |
%S | 秒 (10 ) [00-61] |
%w | 曜日 (3 ) [0-6 = 日曜日-土曜日] |
%x | 日付(例:09/16/98 ) |
%X | 時刻(例:23:48:10 ) |
%Y | 完全な年 (1998 ) |
%y | 2桁の年 (98 ) [00-99] |
%% | 文字 `% ` |
引数を指定せずにdate
を呼び出すと、%c
フォーマット、つまり、適切な形式での完全な日付と時刻情報が使用されます。%x
、%X
、および%c
の表現は、ロケールとシステムによって変化することに注意してください。mm/dd/yyyy
のような固定表現が必要な場合は、"%m/%d/%Y"
のような明示的なフォーマット文字列を使用してください。
os.clock
関数は、プログラムのCPU時間の秒数を返します。典型的な使い方は、コードの一部をベンチマークすることです。
local x = os.clock() local s = 0 for i=1,100000 do s = s + i end print(string.format("elapsed time: %.2f\n", os.clock() - x))
Copyright © 2003–2004 Roberto Ierusalimschy. All rights reserved. | ![]() |