2016-09-18 3 views
-2

基本的には、os.time()os.difftime()またはおそらくos.clock()を使用して、スクリプトの特定の部分で現在実行されている時間を調べるにはどうすればよいですか。os.time()を使ってスクリプトの現在の時刻を知る方法は?

10分でコマンドを実行しようとしていますが、20分で10分間隔で別のコマンドを40分まで実行しようとしていますが、その後0にリセットして再起動しようとしています。

アイデア?

+0

'os.timeは()'いくつかの固定日から経過した秒数を返します。 –

+1

あなたがここで尋ねていることは本当にはっきりしません。 – Veltas

答えて

0

あなたの問題は何ですか?これはすべてLuaのリファレンスマニュアルに書かれています。 http://www.lua.org/manual/5.3/manual.html#pdf-os.time

os.time([table])引数なしで呼び出された場合、現在の時刻が返されます。

os.difftime(t2, t1)は、時間差t2-t1を秒単位で返します。

開始時間を保存して、時間差が600を超えているかどうかを頻繁に確認してから、開始時間をリセットしてもう一度やり直してください。

また、あなたはあなたが時々やっていることを停止し、時間があなたの関数を実行するために来ているかどうかを確認する必要がどのような場合でもos.clock()

を使用することができます。だからあなたは、あなたのシーケンシャルコードを中断可能なビットに分割しなければなりません。 10分の間に何もしなければ、単純なループで時間をチェックするだけです。

便利なタイマーとタイマーイベント機能を提供するLuaライブラリ(例:wxLua)がたくさんあります。自分で実装したくない場合。

0

あなたは例えば、スクリプトが開始されてからの時間を見つけるために、後でその値を使用してスクリプトストア最初の時間を持つことができます:

start_time = os.time() 

function sleep(n) -- seconds 
    local t0 = os.clock() 
    while os.clock() - t0 <= n do end 
end 

-- Write script logic here... 
-- ... 
sleep(5) 
-- ... 
-- You can later find how much time passed since beginning of execution by calling os.time() again 
print(os.time()-start_time.." seconds since start of script execution...") 
関連する問題