I have an array of random dates [not coming from MySQL]. I need to group them by the week as Week1, Week2, and so on upto Week5.
What I have is this:
$dates = array['2015-09-01','2015-09-05','2015-09-06','2015-09-15','2015-09-17'];
What I need is a function to get the week number of the month by providing the date.
I know that I can get the weeknumber by doing date['W',strtotime['2015-09-01']];
but
this week number is the number between year [1-52] but I need the week number of the month only, e.g. in Sep 2015 there are 5 weeks:
- Week1 = 1st to 5th
- Week2 = 6th to 12th
- Week3 = 13th to 19th
- Week4 = 20th to 26th
- Week5 = 27th to 30th
I should be able to get the week Week1 by just providing the date e.g.
$weekNumber = getWeekNumber['2015-09-01'] //output 1;
$weekNumber = getWeekNumber['2015-09-17'] //output 3;
Anders
7,9479 gold badges50 silver badges80 bronze badges
asked Sep 16, 2015 at 18:18
1
I think this relationship should be true and come in handy:
Week of the month = Week of the year - Week of the year of first day of month + 1
We also need to make sure that "overlapping" weeks from the previous year are handeled correctly - if January 1st is in week 52 or 53, it should be counted as week 0. In a similar fashion, if a day in December is in the first week of the next year, it should be counted as 53. [Previous versions of this answer failed to do this properly.]