This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

lua table range of dates
#1
How can i create a lua table of the last dates and days for the previous 14 day period, starting at today?  
I want to end up with {day 1 = {date = "8/19/2020", day = "wednesday"}, day_two = {date = "7/19/2020", day = "Tuesday"}....... }

i started with 
Code:
1234567891011
t = os.date("*t") data ={} today = os.date('%w') --%w weekday (3) [0-6 = Sunday-Saturday] Index  = 1 for i = 1, 14 do data[i] = today -Index Index = Index+1 end
how can i filter out the -ve values and make it circular 0-6  to line up with the %w pattern
Reply
#2
You need to use modulo (%) operator for this:
Code:
12345678
data = {} today = os.date('%w') for i = 1, 14 do   data[ i ] = (today - i) % 7 end log(data)
Reply
#3
(20.08.2020, 06:46)admin Wrote: You need to use modulo (%) operator for this:
Code:
12345678
data = {} today = os.date('%w') for i = 1, 14 do   data[ i ] = (today - i) % 7 end log(data)
Many thanks,
how can i also get the associated date for the previous days?, taking into account if the range of 14 days is between 2 months,
i have so far the below it assumes feb has 28 days but im not sure it is correct and works properly....
also, is there a way to include the leap year so days_in_month {Feburary} is changing depending if it is 28 or 29 days?

Code:
12345678910111213141516171819202122
days_in_month = {31, 28, 31, 30 ,31, 3031, 31, 30, 31, 30, 31} data = {} today = os.date('%w') -- week day number month_daytonumber(os.date('%d') )-- date in month for day month_num = tonumber(os.date('%m'))  --%m month (09) [01-12] for i = 1, 60 do   mth_day  = (month_day - i) % days_in_month[month_num]     if mth_day < 1 then     log('exceeded month getting prev month date')     month_num = month_num-1     mth_day = days_in_month[month_num]   end         data[ i ] = { day_num = (today -i) %7, day_in_month = mth_day, month_date = month_num}     end log(data)
Reply
#4
Hi,

You made it way to complicated (: Try this:
Code:
1234567891011
time = os.time() data = {} for i = 1, 365 do   datetimetable = os.date('*t', time)   data[ i ] = { day_num = datetimetable.wday, week_day = os.date('%A', time), day_in_month = datetimetable.day, month_date = datetimetable.month}   time = time - 86400 -- substract 1 day end log(data)
To have a table like in your initial question try this:
Code:
12345678910
time = os.time() data = {} for i = 1, 14 do   data['day ' .. i] = { dateos.date('%x', time), day = os.date('%A', time)}   time = time - 86400 -- substract 1 day end log(data)
BR,

Erwin
Reply
#5
(21.08.2020, 07:21)Erwin van der Zwart Wrote: Hi,

You made it way to complicated (: Try this:
Code:
1234567891011
time = os.time() data = {} for i = 1, 365 do   datetimetable = os.date('*t', time)   data[ i ] = { day_num = datetimetable.wday, week_day = os.date('%A', time), day_in_month = datetimetable.day, month_date = datetimetable.month}   time = time - 86400 -- substract 1 day end log(data)
To have a table like in your initial question try this:
Code:
12345678910
time = os.time() data = {} for i = 1, 14 do   data['day ' .. i] = { dateos.date('%x', time), day = os.date('%A', time)}   time = time - 86400 -- substract 1 day end log(data)
BR,

Erwin
Hi Erwin,

Yes i did make it very complicated..., your way is much better 

Many Thanks
Reply
#6
(20.08.2020, 06:46)admin Wrote: You need to use modulo (%) operator for this:
Code:
12345678
data = {} today = os.date('%w') for i = 1, 14 do   data[ i ] = (today - i) % 7 end log(data)



please can you tell me where i can find that module to import in the LM?
Reply
#7
It's a built-in arithmetic operator: https://www.lua.org/manual/5.1/manual.html#2.5.1
Reply


Forum Jump: