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:
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:
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:
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:
days_in_month = {31, 28, 31, 30 ,31, 30,  31, 31, 30, 31, 30, 31}

data = {}

today = os.date('%w') -- week day number
month_day =  tonumber(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:
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:
time = os.time()

data = {}

for i = 1, 14 do
  data['day ' .. i] = { date =  os.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:
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:
time = os.time()

data = {}

for i = 1, 14 do
  data['day ' .. i] = { date =  os.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:
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: