derick          Wed Jul 23 18:49:38 2008 UTC

  Added files:                 
    /php-src/ext/date/tests     bug43452.phpt 

  Modified files:              
    /php-src/ext/date/lib       parse_date.re parse_date.c 
  Log:
  - 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)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/date/lib/parse_date.re?r1=1.86&r2=1.87&diff_format=u
Index: php-src/ext/date/lib/parse_date.re
diff -u php-src/ext/date/lib/parse_date.re:1.86 
php-src/ext/date/lib/parse_date.re:1.87
--- php-src/ext/date/lib/parse_date.re:1.86     Wed Jul 16 15:40:01 2008
+++ php-src/ext/date/lib/parse_date.re  Wed Jul 23 18:49:37 2008
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: parse_date.re,v 1.86 2008/07/16 15:40:01 derick Exp $ */
+/* $Id: parse_date.re,v 1.87 2008/07/23 18:49:37 derick Exp $ */
 
 #include "timelib.h"
 
@@ -1680,7 +1680,7 @@
                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;
http://cvs.php.net/viewvc.cgi/php-src/ext/date/lib/parse_date.c?r1=1.95&r2=1.96&diff_format=u
Index: php-src/ext/date/lib/parse_date.c
diff -u php-src/ext/date/lib/parse_date.c:1.95 
php-src/ext/date/lib/parse_date.c:1.96
--- php-src/ext/date/lib/parse_date.c:1.95      Wed Jul 16 15:40:00 2008
+++ php-src/ext/date/lib/parse_date.c   Wed Jul 23 18:49:37 2008
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Jul 16 17:39:20 2008 */
+/* Generated by re2c 0.13.5 on Wed Jul 23 20:47:26 2008 */
 #line 1 "ext/date/lib/parse_date.re"
 /*
    +----------------------------------------------------------------------+
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: parse_date.c,v 1.95 2008/07/16 15:40:00 derick Exp $ */
+/* $Id: parse_date.c,v 1.96 2008/07/23 18:49:37 derick Exp $ */
 
 #include "timelib.h"
 
@@ -2749,7 +2749,7 @@
                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;

http://cvs.php.net/viewvc.cgi/php-src/ext/date/tests/bug43452.phpt?view=markup&rev=1.1
Index: php-src/ext/date/tests/bug43452.phpt
+++ php-src/ext/date/tests/bug43452.phpt
--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



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to