This topic contains 3 replies, has 3 voices, and was last updated by mark.brighton 3 years, 6 months ago.
Get previous day's date in LUA
You must be logged in to reply to this topic.
This topic contains 3 replies, has 3 voices, and was last updated by mark.brighton 3 years, 6 months ago.
What is the best way to get the previous day’s date in Lua? I tried subtracting 1 from os.date(*t) table, but it doesn’t work if the current date is 01/xx/2019.
I also tried:
os.date(“%Y-%m-%d”,os.time()-24*60*60)
but getting this error
attempt to perform arithmetic on a userdata value
Thank you.
There’s an example of date math near the end of this thread. Should be easy to adapt to your needs.
Jeff Drumm ◊ VP and COO ◊ HICG, LLC. ◊ http://www.hicgrp.com
Hi Jeff, It worked. Thank you. You are awesome
pastOrFuture = string.lower(pastOrFuture)
local currrentDate = os.date(‘*t’)
local atime = os.ts.time({year=currrentDate.year,month=currrentDate.month,day=currrentDate.day,hour=0,min=0,sec=0}) — create epoch time
local adayInSeconds = (60 * 60 * 24*NumberOfDays )
local btime
if(pastOrFuture ==’past’) then
btime = atime – adayInSeconds
else
btime = atime + adayInSeconds
end
local adate = os.ts.date(‘%d%m%Y’,btime)
end
Thank you
There’s a second way to solve this. The original lua os.time() (now os.ts.time() in Iguana) will deal with “improper” date tables. It’s not documented in the lua manual, but pointed out here http://lua-users.org/wiki/DealingWithDateTime.
So you can do this:
date = os.time({year=2019, month=11, day=1, hour=0})
tbl = os.date(‘*t’, date)
tbl.day = tbl.day – 1
newDateStr = os.ts.date(‘%c’, os.ts.time(tbl))
newDateStr will be “10/31/19 00:00:00”.
This do *not* work using the Iguana implementation of os.time().
This answer uses an undocumented lua feature. The previous answer relies on os.ts.time() returning seconds (which the lua manual explicitly doesn’t guarantee). Choose your extremely unlikely source of a future bug! 😉
You must be logged in to reply to this topic.