Lua中如何在给定的日期时间上添加天数

我是Lua脚本的新手。我的系统运行在任何时区,但我需要我的新日期在GMT时区,并且我的给定日期也在GMT时区。

local creation_date = "2016-05-23 07:34:19"; //(这是GMT日期)

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)

现在每当我尝试打印到期日期时,它必须打印

   expiry_date ="2016-06-03 07:34:19" //(给定日期+10天)

但是它打印如下

   expiry_date = "2016-06-13 12:00:00"// (错误日期)

我知道在Lua中必须有正确打印日期的功能,但无法从Google上获得。

点赞
用户234175
用户234175

我注意到两个可能会导致问题的地方,第一,10*60*60 并不是10天的秒数,它只是10小时的秒数——你可能需要 10*24*60*60。第二个问题是你在 os.time 中使用了错误的字段,正确的字段应该是 hourminsec

例如,

local creation_date = "2016-05-23 07:34:19" -- (这是 GMT 日期)

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
2017-01-04 08:08:33