OS時間

グローバル os テーブルは、タイムスタンプ、日付書式、経過時間の測定、時刻差の計算を提供します。ワークフロー内の現在時刻の読み取りにはワークフローの時刻基準を使用し、ワークフロー外ではシステムクロックを使用します。

このページは API リファレンスです。タイムスタンプのリテラルと書式済み出力は例示であり、実際の値はランタイムまたはワークフローのクロックとタイムゾーンによって変わります。

ロード

グローバルosテーブル。requireは不要。

os.time()
os.date()
os.clock()
os.difftime()

タイムスタンプの取得

Unixタイムスタンプ(1970年1月1日UTC以降の秒数)を取得:

-- Current timestamp
local now = os.time()  -- 1718462445

-- Specific date/time
local t = os.time({
    year = 2024,
    month = 12,
    day = 25,
    hour = 10,
    min = 30,
    sec = 0
})

シグネチャ: os.time([spec]) -> number

パラメータ:

フィールド 型 デフォルト 説明
year number 現在の年 4桁の年(例: 2024)
month number 現在の月 月 1-12
day number 現在の日 日 1-31
hour number 0 時 0-23
min number 0 分 0-59
sec number 0 秒 0-59

引数なしで呼び出すと、現在のUnixタイムスタンプを返す。

テーブルで呼び出すと、不足しているフィールドは上記のデフォルト値を使用。year、month、dayフィールドは指定されない場合、現在の日付がデフォルト。

-- Just date (time defaults to midnight)
os.time({year = 2024, month = 6, day = 15})

-- Partial (fills in current year/month)
os.time({day = 1})  -- first of current month

日付のフォーマット

タイムスタンプを文字列にフォーマットするか、日付テーブルを返す:

local now = os.time()

-- デフォルトフォーマット os.date() -- "Sat Jun 15 14:30:45 2024"

-- カスタムフォーマット os.date("%Y-%m-%d", now) -- "2024-06-15" os.date("%H:%M:%S", now) -- "14:30:45" os.date("%Y-%m-%dT%H:%M:%S", now) -- "2024-06-15T14:30:45"

-- UTC時間(フォーマットの前に!を付ける) os.date("!%Y-%m-%d %H:%M:%S", now) -- ローカルの代わりにUTC

-- 日付テーブル local t = os.date("*t", now)

シグネチャ: os.date([format], [timestamp]) -> string | table

パラメータ 型 デフォルト 説明
format string "%c" フォーマット文字列、テーブルには"*t"
timestamp number 現在時刻 フォーマットするUnixタイムスタンプ

フォーマット指定子

コード 出力 例
%Y 4桁の年 2024
%y 2桁の年 24
%m 月 (01-12) 06
%d 日 (01-31) 15
%H 24時間制の時 (00-23) 14
%I 12時間制の時 (01-12) 02
%M 分 (00-59) 30
%S 秒 (00-59) 45
%p AM/PM PM
%A 曜日名 Saturday
%a 曜日略称 Sat
%B 月名 June
%b 月略称 Jun
%w 曜日 (0-6, 日曜=0) 6
%j 年間日 (001-366) 167
%U ISO 8601週番号 (01-53、週は月曜始まり) 24
%W ISO 8601週番号 (01-53、週は月曜始まり) 24
%z タイムゾーンオフセット -0700
%Z タイムゾーン名 PDT
%c 完全な日時 Sat Jun 15 14:30:45 2024
%x 日付のみ 06/15/24
%X 時刻のみ 14:30:45
%% リテラル% %

日付テーブル

フォーマットが"*t"の場合、テーブルを返す:

local t = os.date("*t")
フィールド 型 説明 例
year number 4桁の年 2024
month number 月 (1-12) 6
day number 日 (1-31) 15
hour number 時 (0-23) 14
min number 分 (0-59) 30
sec number 秒 (0-59) 45
wday number 曜日 (1-7, 日曜=1) 7
yday number 年間日 (1-366) 167
isdst boolean このリリースではゾーンの UTC オフセットが 0 以外なら true。信頼できる DST 指標ではない false

UTC日付テーブルには"!*t"を使用。

経過時間の測定

現在のランタイム時刻基準と OS-time モジュールの初期化時刻との間の秒数を取得します。

local start = os.clock()

-- do work
for i = 1, 1000000 do end

local elapsed = os.clock() - start
print(string.format("Took %.3f seconds", elapsed))

シグネチャ: os.clock() -> number

標準 Lua の CPU 時間という定義とは異なり、この実装は経過時間に基づきます。ワークフロー内ではワークフローの時刻基準を使用します。

時間差

2つのタイムスタンプ間の差を秒で取得:

local t1 = os.time({year = 2024, month = 1, day = 1})
local t2 = os.time({year = 2024, month = 12, day = 31})

local diff = os.difftime(t2, t1)  -- t2 - t1
local days = diff / 86400
print(days)  -- 365

シグネチャ: os.difftime(t2, t1) -> number

パラメータ 型 説明
t2 number 後のタイムスタンプ
t1 number 前のタイムスタンプ

秒単位でt2 - t1を返す。t1 > t2の場合は負になる。

プラットフォーム定数

ランタイムを識別する定数:

os.platform  -- "wippy"