2017-01-04 20 views
2

私はLua scripting.myシステムでは初心者ですが、どのタイムゾーンでも実行していますが、gmtのタイムゾーンで私の新しい日付とgmtで指定した日付が必要です。私はそれが与えられた日時をLuaで追加する方法

expiry_date ="2016-06-03 07:34:19" //(GIVEN DATE + 10 DAYS) 

を印刷する必要がある。しかしその代わりに

expiry_date = "2016-06-13 12:00:00"// (Wrong Date) 

以下のように印刷されなければならない期限を印刷しようとしていたときに

local creation_date = "2016-05-23 07:34:19"; //(This is in GMT date) 

local yearValue, monthValue, dayValue,Hourvalue,Minutevalue,secondvalue = 
string.match(creation_date, '(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)') 

dayValue, monthValue, yearValue,Hourvalue,Minutevalue,secondvalue = tonumber(dayValue), tonumber(monthValue), tonumber(yearValue),tonumber(Hourvalue),tonumber(Minutevalue),tonumber(secondvalue) 

expiry_date = os.date("!%Y-%m-%d %H:%M:%S",os.time{year = yearValue, month = monthValue, day = dayValue,hour = Hourvalue,minute =Minutevalue,second = secondvalue}+10*24*60*60) 

は、今私はLuaの中で知っていなければならない機能を持っています必要に応じて日付を適切な方法で印刷しますが、Googleからは取得できません。

+2

10 * 60 * 60秒に変換し、わずか10時間です。 – hjpotter92

+0

それは私の間違いだったので、私は数時間ではなく日を追加しましたが、私の質問は10時間後のような正確な時間を表示していないので、表示する必要があります2016-06-03 17:34:19しかし、任意のアイデアをコードする上記の?なにか提案を ? –

+0

'os.time'のパラメータを参照してください:https://devdocs.io/lua~5.3/index#pdf-os.time – hjpotter92

答えて

2

問題が発生する可能性があるのは、最初に10*60*60は10日ではなく、わずか10時間です。おそらく10*24*60*60が必要です。 2番目の問題は、os.timeに間違ったフィールドを使用していて、使用するフィールドがhour,minおよびsecであることです。例えば

local creation_date = "2016-05-23 07:34:19" -- (This is in GMT date) 

local y, m, d, Hr, Min, Sec = creation_date:match '(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)' 

local exp_sec = os.time 
    { year = y, month = m, day = d, 
     hour = Hr, min = Min, sec = Sec } + 10*24*60*60 
+0

返信ありがとう、私にこれを試してみましょう –

+0

私は上記のコードを試していますが、それでも与えている私は5時間差があります。上記のコードの私の本当の例の答えcreation_date = '2017-01-04 08:14:17'と私に表示されるexpiry_date = '2017-01-14 13:14:17'代わりにexpiry_date = '2017-01-14 08:14 :17 ' –

+0

これは、 '!'が普遍的な座標に変換されているため、印刷された時間が乱れることがあります。日付形式を ''%Y-%m-%d%H:%M:%S "'に変更してみてください。 – greatwolf

関連する問題