Can you help me for my request ?
I would like to know the first day and the last day of current week.
Example :
current week : 19
First day : 08/05/2017 (dd/mm/yyyy)
Last day : 14/05/2017 (dd/mm/yyyy)
Thanks for your help.
Jérôme
'
'Dim Now As Long = (DateTime.GetDayOfWeek(DateTime.Now)+6) MOD 7 ' If start Sunday
Dim Now As Long = (DateTime.GetDayOfWeek(DateTime.Now)+5) Mod 7 ' If start Monday
Dim FirstDay As Long = DateTime.Now-(DateTime.TicksPerDay*Now)
Dim LastDay As Long = FirstDay + (6 * DateTime.TicksPerDay)
Log(DateTime.GetDayOfMonth(FirstDay) & "-" & DateTime.GetMonth(FirstDay) & "-" & DateTime.GetYear(FirstDay))
Log(DateTime.GetDayOfMonth(LastDay) & "-" & DateTime.GetMonth(LastDay) & "-" & DateTime.GetYear(LastDay))
'
'Dim Now As Long = (DateTime.GetDayOfWeek(DateTime.Now)+6) MOD 7 ' If start Sunday
Dim Now As Long = (DateTime.GetDayOfWeek(DateTime.Now)+5) Mod 7 ' If start Monday
Dim FirstDay As Long = DateTime.Now-(DateTime.TicksPerDay*Now)
Dim LastDay As Long = FirstDay + (6 * DateTime.TicksPerDay)
Log(DateTime.GetDayOfMonth(FirstDay) & "-" & DateTime.GetMonth(FirstDay) & "-" & DateTime.GetYear(FirstDay))
Log(DateTime.GetDayOfMonth(LastDay) & "-" & DateTime.GetMonth(LastDay) & "-" & DateTime.GetYear(LastDay))
Dim FirstDay As Long = DateTime.Now-(DateTime.TicksPerDay*Now)
They are correct in 99% of the cases, however they are incorrect on the days DST (daylight saving time) changes.
Better to use DateUtils.AddPeriod:
B4X:
Dim p As Period
p.Days = -((DateTime.GetDayOfWeek(DateTime.Now)+6) Mod 7) 'change to 5 to start the week from Monday
Dim FirstDay As Long = DateUtils.AddPeriod(DateTime.Now, p)
p.Days = 7
Dim LastDay As Long = DateUtils.AddPeriod(FirstDay, p)
Log($"First: $DateTime{FirstDay}"$)
Log($"Last: $DateTime{LastDay}"$)