Bij weergave van gegevens van een week geleden tot nu moet je de begindatum van die periode bepalen.
Hoe kan ik de datum van een week terug vinden?
De huidige datum in Gambas krijg je met:
date()
of
date(now())
(Deze commando’s kan je uitproberen in het Console venster onderaan in Gambas IDE, met vraagteken plus commando, zoals “ ? date()“.)
De gewone now() geeft ook de tijd erbij. Maar het interessante aan now() is dat je van daaruit kan teruggaan naar de dag van nu min een week:
date(now()-7)
In de Console moet het zo:
? Date(Now()-"7")
Als je dus from.. until datums nodig hebt, kan je hiermee je “from” datum berekenen.
De aparte waarden voor jaar, maand en dag indien je die nodig hebt, bv voor het opstellen van een SQL vraag:
year(date(now()-7) & "-" & month(date(now())-7) & "-" & day(date(now())
Of als je de hele voorbije week nodig hebt, kan je een array vullen met die dagen:
PUBLIC SUB fillLastWeek(arrLastWeek AS Date[], iBack AS Integer, OPTIONAL bTodayIncl AS Boolean) DIM dStart AS Date DIM dRun AS Date DIM dEnd AS Date DIM i AS Integer DIM iShiftToday AS Integer = 0 DEBUG arrLastWeek.Type IF bTodayIncl iShiftToday = 1 ENDIF IF iBack = 0 iBack = 7 ENDIF dStart = Date(Now() - (iBack - iShiftToday)) dRun = dStart FOR i = (1) TO (iBack) arrLastWeek.Add(dRun) dRun = Date(dStart + i) 'DEBUG "i=" & i & " iBack=" & iBack & " iShiftToday=" & iShiftToday & " dRun = " & dRun NEXT END
Wordt aangeroepen:
fillLastWeek(arrLastWeek, 7)
of
fillLastWeek(arrLastWeek, 7, TRUE)
Nog een vraag: wat was de eerste dag van deze week?
? date(now()-weekday(Now())+"1")
Zonder de +1 kom je op zondag uit; je kan die 1 ook aftrekken van je dagnummer natuurlijk:
? date(now()-(weekday(Now()-"1")))
Zeker nuttig is ook DateAdd, waar je bij een datum aangeeft welke eenheid er hoeveel bij moet geteld worden:
DateAdd(date1, gb.Day, 7)