Skip to content

Commit

Permalink
- MFH: Fixed bug #43452 (strings containing a weekday, or a number pl…
Browse files Browse the repository at this point in the history
…us weekday

  behaved incorrect of the current day-of-week was the same as the one in the
  phrase).
  • Loading branch information
Derick Rethans committed Jul 23, 2008
1 parent a2cc7ec commit 11f9cd8
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 3 deletions.
3 changes: 3 additions & 0 deletions NEWS
Expand Up @@ -249,6 +249,9 @@ PHP NEWS
- Fixed bug #43808 (date_create never fails (even when it should)). (Derick)
- Fixed bug #43527 (DateTime created from a timestamp reports environment
timezone). (Derick)
- Fixed bug #43452 (strings containing a weekday, or a number plus weekday
behaved incorrect of the current day-of-week was the same as the one in the
phrase). (Derick)
- Fixed bug #43426 (crash on nested call_user_func() calls). (Dmitry)
- Fixed bug #43323 (Wrong count abstract methods). (Felipe, Dmitry)
- Fixed bug #43261 (Use ^ as the escape with escapeshellcmd() on Windows). (Scott)
Expand Down
4 changes: 2 additions & 2 deletions ext/date/lib/parse_date.c
@@ -1,4 +1,4 @@
/* Generated by re2c 0.13.5 on Wed Jul 16 17:24:19 2008 */
/* Generated by re2c 0.13.5 on Wed Jul 23 19:59:35 2008 */
#line 1 "ext/date/lib/parse_date.re"
/*
+----------------------------------------------------------------------+
Expand Down Expand Up @@ -2749,7 +2749,7 @@ static int scan(Scanner *s)
while(*ptr) {
i = timelib_get_unsigned_nr((char **) &ptr, 24);
timelib_eat_spaces((char **) &ptr);
timelib_set_relative((char **) &ptr, i, 0, s);
timelib_set_relative((char **) &ptr, i, 1, s);
}
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
Expand Down
2 changes: 1 addition & 1 deletion ext/date/lib/parse_date.re
Expand Up @@ -1680,7 +1680,7 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) ' of';
while(*ptr) {
i = timelib_get_unsigned_nr((char **) &ptr, 24);
timelib_eat_spaces((char **) &ptr);
timelib_set_relative((char **) &ptr, i, 0, s);
timelib_set_relative((char **) &ptr, i, 1, s);
}
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
Expand Down
71 changes: 71 additions & 0 deletions ext/date/tests/bug43452.phpt
@@ -0,0 +1,71 @@
--TEST--
Bug #43452 ("weekday" is not equivalent to "1 weekday" of the current weekday is "weekday")
--INI--
date.default_timezone=Europe/Oslo
--FILE--
<?php
// <day> is equivalent to 1 <day> and will *not* forward if the current day
// (November 1st) is the same day of week.
$day = strtotime( "Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "1 Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "2 Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "3 Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n\n";

// forward one week, then behaves like above for week days
$day = strtotime( "Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "+1 week Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "+2 week Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "+3 week Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n\n";

// First, second, etc skip to the first/second weekday *after* the current day.
// This makes "first thursday" equivalent to "+1 week thursday" - but only
// if the current day-of-week is the one mentioned in the phrase.
$day = strtotime( "Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "first Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "second Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "third Thursday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n\n";

// Now the same where the current day-of-week does not match the one in the
// phrase.
$day = strtotime( "Friday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "first Friday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "second Friday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n";
$day = strtotime( "third Friday Nov 2007" );
echo date( DateTime::ISO8601, $day ), "\n\n";

?>
--EXPECT--
2007-11-01T00:00:00+0100
2007-11-01T00:00:00+0100
2007-11-08T00:00:00+0100
2007-11-15T00:00:00+0100

2007-11-01T00:00:00+0100
2007-11-08T00:00:00+0100
2007-11-15T00:00:00+0100
2007-11-22T00:00:00+0100

2007-11-01T00:00:00+0100
2007-11-08T00:00:00+0100
2007-11-15T00:00:00+0100
2007-11-22T00:00:00+0100

2007-11-02T00:00:00+0100
2007-11-02T00:00:00+0100
2007-11-09T00:00:00+0100
2007-11-16T00:00:00+0100

0 comments on commit 11f9cd8

Please sign in to comment.