How To Find All Weeks First date and Last date? [message #174376] |
Thu, 09 June 2011 12:25 |
Amit Pawar
Messages: 1 Registered: June 2011
Karma: 0
|
Junior Member |
|
|
Hi,
I want to find All no of week in any month.
And first and last date of that week.
Assume Month is Jan 2011
date in Y-m-d
1st week -> Start date=2011-01-01 End date=2011-01-01
2nd week -> Start date=2011-01-02 End date=2011-01-08
3rd week -> Start date=2011-01-09 End date=2011-01-15
4th week -> Start date=2011-01-16 End date=2011-01-22
5th week -> Start date=2011-01-23 End date=2011-01-29
6th week -> Start date=2011-01-30 End date=2011-01-31
|
|
|
Re: How To Find All Weeks First date and Last date? [message #174388 is a reply to message #174376] |
Thu, 09 June 2011 19:03 |
Luuk
Messages: 329 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 09-06-2011 14:25, Amit Pawar wrote:
> Hi,
>
> I want to find All no of week in any month.
> And first and last date of that week.
>
> Assume Month is Jan 2011
>
> date in Y-m-d
> 1st week -> Start date=2011-01-01 End date=2011-01-01
> 2nd week -> Start date=2011-01-02 End date=2011-01-08
> 3rd week -> Start date=2011-01-09 End date=2011-01-15
> 4th week -> Start date=2011-01-16 End date=2011-01-22
> 5th week -> Start date=2011-01-23 End date=2011-01-29
> 6th week -> Start date=2011-01-30 End date=2011-01-31
$d=mktime (0,0,0,1,1,2011);
for ($i=0; $i<35; $i++) {
$x=$d+($i*24*3600);
if (date("w",$x)==0) {
print date("W d-m", $x).date(" d-m\n", $x+(6*24*3600));
}
}
You need to change this in order to get it to work ;)
--
Luuk
|
|
|
Re: How To Find All Weeks First date and Last date? [message #174396 is a reply to message #174376] |
Fri, 10 June 2011 00:03 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 6/9/2011 8:25 AM, Amit Pawar wrote:
> Hi,
>
> I want to find All no of week in any month.
> And first and last date of that week.
>
> Assume Month is Jan 2011
>
> date in Y-m-d
> 1st week -> Start date=2011-01-01 End date=2011-01-01
> 2nd week -> Start date=2011-01-02 End date=2011-01-08
> 3rd week -> Start date=2011-01-09 End date=2011-01-15
> 4th week -> Start date=2011-01-16 End date=2011-01-22
> 5th week -> Start date=2011-01-23 End date=2011-01-29
> 6th week -> Start date=2011-01-30 End date=2011-01-31
First of all, what day does your week start on? Sunday, from the looks
of it, but need to be sure.
Next, most calendars would consider that since Jan 1 is on a Saturday,
that is part of the last week of 2010, and the first week of 2010 would
start on Jan 2.
So first you need to find the first Sunday. This is pretty easy to do by
getting the day of week for 2011-01-01 as a number (1-7 for
Monday-Sunday). See date() for DateTime::format() with the 'N' format.
From there it's a simple matter to get the end of the week by adding 6
days (DateInteral object). You can then get the start of the next week
by either adding 1 day to the end of the week or 7 days to the start
of the previous week.
Not too hard if you look up the DateTime object in the manual. It
contains all the references you need. See
http://us.php.net/manual/en/class.datetime.php.
(Note: adding 60*60*24*7 seconds will be off by one hour for 1/2 the
year if you run Daylight Savings Time in the summer - not necessarily a
problem if you only are interested in dates).
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
Re: How To Find All Weeks First date and Last date? [message #174398 is a reply to message #174396] |
Fri, 10 June 2011 00:41 |
Jeff North
Messages: 58 Registered: November 2010
Karma: 0
|
Member |
|
|
On Thu, 09 Jun 2011 20:03:30 -0400, in comp.lang.php Jerry Stuckle
<jstucklex(at)attglobal(dot)net>
<isrn11$sg8$1(at)dont-email(dot)me> wrote:
> | On 6/9/2011 8:25 AM, Amit Pawar wrote:
> | > Hi,
> | >
> | > I want to find All no of week in any month.
> | > And first and last date of that week.
> | >
> | > Assume Month is Jan 2011
> | >
> | > date in Y-m-d
> | > 1st week -> Start date=2011-01-01 End date=2011-01-01
> | > 2nd week -> Start date=2011-01-02 End date=2011-01-08
> | > 3rd week -> Start date=2011-01-09 End date=2011-01-15
> | > 4th week -> Start date=2011-01-16 End date=2011-01-22
> | > 5th week -> Start date=2011-01-23 End date=2011-01-29
> | > 6th week -> Start date=2011-01-30 End date=2011-01-31
> |
> | First of all, what day does your week start on? Sunday, from the looks
> | of it, but need to be sure.
> |
> | Next, most calendars would consider that since Jan 1 is on a Saturday,
> | that is part of the last week of 2010, and the first week of 2010 would
> | start on Jan 2.
> |
> | So first you need to find the first Sunday. This is pretty easy to do by
> | getting the day of week for 2011-01-01 as a number (1-7 for
> | Monday-Sunday). See date() for DateTime::format() with the 'N' format.
> |
> | From there it's a simple matter to get the end of the week by adding 6
> | days (DateInteral object). You can then get the start of the next week
> | by either adding 1 day to the end of the week or 7 days to the start
> | of the previous week.
> |
> | Not too hard if you look up the DateTime object in the manual. It
> | contains all the references you need. See
> | http://us.php.net/manual/en/class.datetime.php.
> |
> | (Note: adding 60*60*24*7 seconds will be off by one hour for 1/2 the
> | year if you run Daylight Savings Time in the summer - not necessarily a
> | problem if you only are interested in dates).
Just to add to Jerry's post:
The problem of Daylight Saving Time can be corrected by making sure
that the time is set to midday not midnight i.e.
<?php
$Aday = 60 * 60 * 24;
$dt = strtotime('2011-01-01 12:00:00');
for( $x=0; $x<53; $x++ ) {
echo date ( "W w Y-m-d", $dt )."<br>";
$dt += $Aday * 7;
}
?>
Change the 12:00:00 to 00:00:00 to see what effect the DST has on the
calculations.
The interesting part is that the date() drops a whole day when DST
starts and picks up the correct date when DST ends.
|
|
|