Android Question Get first day and last day of current week

jejeadsl

Member
Licensed User
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
 

Star-Dust

Expert
Licensed User
Longtime User
B4X:
'
    '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))
@Star-Dust
 
Upvote 0

jejeadsl

Member
Licensed User
B4X:
'
    '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))
@Star-Dust

Great job:)

Thank you so much.
 
Upvote 0

Star-Dust

Expert
Licensed User
Longtime User
Nothing ;)
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
Such lines are "dangerous":
B4X:
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}"$)
 
Upvote 0
Top