Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 如何在Lua中的给定日期时间中添加天数_Datetime_Lua - Fatal编程技术网

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

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+

我是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+):(%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“