I will like an assistance to get the determine if a particular date in a week falls into week1, week2 week3, or week 5 of that month. This code below returns 0-7 starting from mondaythrough saturday, but that is not what i wanted, rather i want to be able to determine e.g today is 19/09/2016, which falls into week3 of this Month. I need assistance on this please.
function getWeekday($date){
return date('w',strtotime($date));
}
All you need is
ceil(date('d')/7);
So your function will look like
function getWeekday($date){
return ceil(date('d',strtotime($date))/7);
}
Even though requirement is a little strange. Week of the month is not a well defined thing but according to your comments on various answers all you need is to see week 1 if the date is within 1st 7 days of the month. 2 for next 7, 3 for next 7, 4 for next 7 and 5 for the leftovers.
Output
D W
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 2
9 2
10 2
11 2
12 2
13 2
14 2
15 3
16 3
17 3
18 3
19 3
20 3
21 3
22 4
23 4
24 4
25 4
26 4
27 4
28 4
29 5
30 5
31 5
Old answer
Simple! you need a capital W
, not a lowercase one.
W
ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0)
return date('W',strtotime($date));
The lowercase one - which you are using - is
Numeric representation of the day of the week
This should work:
echo date('W', strtotime($date)) - date('W', strtotime("first day of this month")) + 1;
This is quite trivial with DateTime objects, or rather DateTimeImmutable.
// Immutable so we don't need to clone the object.
$date = new DateTimeImmutable ($date, $dtz);
// We need to find out which week number the month starts at.
$start = $date->modify ("first day of this month");
// The first week - the current week + 1 == The week in the month.
$monthWeek = $date->format ("W") - $start->format ("W") + 1;
That's all there is to it.