|
Posted by Lars Eighner on 10/14/07 20:59
In our last episode, <1192389864.882127.326370@e9g2000prf.googlegroups.com>,
the lovely and talented Chris broadcast on comp.lang.php:
> On Oct 11, 11:29 pm, Lars Eighner <use...@larseighner.com> wrote:
>> In our last episode,
>> <1192140304.180826.282...@g4g2000hsf.googlegroups.com>,
>> the lovely and talented Chris
>> broadcast on comp.lang.php:
>>
>> > I am trying to output Monday of the current week i.e. if Monday is the
>> > 8th I want to display 'Monday 8th' for any date between Monday 8-14th.
>> > I would appreciate any help, the code below is heading in the right
>> > direction but doesn't quite give me the results I am looking for.
>> > $givenday = mktime(0,0,0,10,08,2007);
>> > $Monday = strtotime("Monday this week",$givenday);
>> > echo date("j M Y H:i:s", $Monday);
>> > Cheers,
>> > Chris
>>
>> This seems to work for me.
>>
>> php -r "echo date('j M Y H:i:s',strtotime('last Monday', \
>> strtotime('Sunday')));"
>>
>> You want the Monday previous to next Sunday.
> Cheers Lars!
> I wanted a link to show this monday, then the next etc. Your code
> helped, will continue to build on it.
> $monday = date('j M Y', strtotime('last Monday',
> strtotime('Sunday')));
> $unixtime_monday = strtotime($monday);
> $next_monday = date('j M Y', strtotime('+1 week', $unixtime_monday));
Yes, but php strtotime already knows 'next Monday':
Sun Oct 14 15:33:54 bash3.2:ttyp0:lars
debranded~$php -r "echo date('j M Y',strtotime('next Monday'));"
15 Oct 2007
(Yes, it is broken if your php is older than 4.4.0)
The problem part of your original problem was that strtotime doesn't know
something like "Monday of this week". The difficulty of implementing that
in the strtotime function would be that people would have different
understandings of what they mean by 'this week.' For example, your problem
involves the work week (of which Sunday is the last day). Most Western
calendars use a week that ends on Saturday. You might well consider Jan. 1
to be the first day of the first week.
And it has been mentioned that:
> $monday = date('j M Y', strtotime('last Monday',
> strtotime('Sunday')));
> $unixtime_monday = strtotime($monday);
is the same as
> $unixtime_monday = strtotime('last Monday', strtotime('Sunday')));
There is no point in going string to time and back.
So even if you have old php (or want to be backwards compatible with
broken versions)
$next_monday = date('j M Y', strtotime('+1 week',
strtotime('last Monday', strtotime('Sunday'))));
--
Lars Eighner <http://larseighner.com/> <http://myspace.com/larseighner>
Countdown: 463 days to go.
What do you do when you're debranded?
Navigation:
[Reply to this message]
|