Datetime 如何在Lua中的给定日期时间中添加天数
我是Lua脚本的新手。我的系统在任何时区运行,但我需要gmt时区中的新日期和gmt中的给定日期Datetime 如何在Lua中的给定日期时间中添加天数,datetime,lua,Datetime,Lua,我是Lua脚本的新手。我的系统在任何时区运行,但我需要gmt时区中的新日期和gmt中的给定日期 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+
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)
现在,每当我试图打印到期日期,它必须打印
expiry_date ="2016-06-03 07:34:19" //(GIVEN DATE + 10 DAYS)
但不是这样,而是像下面这样打印
expiry_date = "2016-06-13 12:00:00"// (Wrong Date)
我知道Lua必须具备按需打印日期的功能,但无法从谷歌获得。我注意到有两件事可能会导致问题,第一件
10*60*60
不是10天的秒数,它只是10小时的秒数——你可能想要10*24*60*60
。第二个问题是您对操作系统时间使用了错误的字段,正确的字段是小时、分钟和秒
比如说,
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
10*60*60只是将10小时转换为秒。好吧,那是我的错误,让我添加天而不是小时,但我的问题没有显示10小时后的准确时间,所以必须显示2016-06-03 17:34:19,但当我执行上述代码时,这不会得到任何想法?有什么建议吗?请查看
os.time
的参数:谢谢您的回复,让我尝试一下。我已经尝试了上面的代码,但仍然有5个小时的差异。我的上述代码创建的真实示例答案是“日期=”2017-01-04 08:14:17“并向我显示到期日期=”2017-01-14 13:14:17“而不是到期日期=”2017-01-14 08:14:17“代码>正在转换为通用坐标,这可能会扰乱打印时间。尝试将日期格式修改为%Y-%m-%d%H:%m:%S“
。