mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
Merge branch 'PHP-5.5' into PHP-5.6
This commit is contained in:
commit
2d3868984c
@ -1,4 +1,4 @@
|
||||
/* Generated by re2c 0.13.5 on Mon Aug 18 18:28:27 2014 */
|
||||
/* Generated by re2c 0.13.5 on Tue Mar 31 16:32:03 2015 */
|
||||
#line 1 "ext/date/lib/parse_date.re"
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
@ -19864,9 +19864,9 @@ yy1315:
|
||||
|
||||
/* skip "last day of" or "first day of" */
|
||||
if (*ptr == 'l' || *ptr == 'L') {
|
||||
s->time->relative.first_last_day_of = 2;
|
||||
s->time->relative.first_last_day_of = TIMELIB_SPECIAL_LAST_DAY_OF_MONTH;
|
||||
} else {
|
||||
s->time->relative.first_last_day_of = 1;
|
||||
s->time->relative.first_last_day_of = TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH;
|
||||
}
|
||||
|
||||
TIMELIB_DEINIT;
|
||||
|
@ -1030,9 +1030,9 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
|
||||
|
||||
/* skip "last day of" or "first day of" */
|
||||
if (*ptr == 'l' || *ptr == 'L') {
|
||||
s->time->relative.first_last_day_of = 2;
|
||||
s->time->relative.first_last_day_of = TIMELIB_SPECIAL_LAST_DAY_OF_MONTH;
|
||||
} else {
|
||||
s->time->relative.first_last_day_of = 1;
|
||||
s->time->relative.first_last_day_of = TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH;
|
||||
}
|
||||
|
||||
TIMELIB_DEINIT;
|
||||
|
@ -38,6 +38,9 @@
|
||||
#define TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH 0x02
|
||||
#define TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH 0x03
|
||||
|
||||
#define TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH 0x01
|
||||
#define TIMELIB_SPECIAL_LAST_DAY_OF_MONTH 0x02
|
||||
|
||||
#ifndef LONG_MAX
|
||||
#define LONG_MAX 2147483647L
|
||||
#endif
|
||||
|
@ -205,15 +205,17 @@ static void do_adjust_relative(timelib_time* time)
|
||||
time->m += time->relative.m;
|
||||
time->y += time->relative.y;
|
||||
}
|
||||
|
||||
switch (time->relative.first_last_day_of) {
|
||||
case 1: /* first */
|
||||
case TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH: /* first */
|
||||
time->d = 1;
|
||||
break;
|
||||
case 2: /* last */
|
||||
case TIMELIB_SPECIAL_LAST_DAY_OF_MONTH: /* last */
|
||||
time->d = 0;
|
||||
time->m++;
|
||||
break;
|
||||
}
|
||||
|
||||
timelib_do_normalize(time);
|
||||
}
|
||||
|
||||
@ -296,6 +298,15 @@ static void do_adjust_special_early(timelib_time* time)
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (time->relative.first_last_day_of) {
|
||||
case TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH: /* first */
|
||||
time->d = 1;
|
||||
break;
|
||||
case TIMELIB_SPECIAL_LAST_DAY_OF_MONTH: /* last */
|
||||
time->d = 0;
|
||||
time->m++;
|
||||
break;
|
||||
}
|
||||
timelib_do_normalize(time);
|
||||
}
|
||||
|
||||
|
@ -3050,7 +3050,7 @@ void php_date_do_return_parsed_time(INTERNAL_FUNCTION_PARAMETERS, timelib_time *
|
||||
add_assoc_long(element, "weekdays", parsed_time->relative.special.amount);
|
||||
}
|
||||
if (parsed_time->relative.first_last_day_of) {
|
||||
add_assoc_bool(element, parsed_time->relative.first_last_day_of == 1 ? "first_day_of_month" : "last_day_of_month", 1);
|
||||
add_assoc_bool(element, parsed_time->relative.first_last_day_of == TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH ? "first_day_of_month" : "last_day_of_month", 1);
|
||||
}
|
||||
add_assoc_zval(return_value, "relative", element);
|
||||
}
|
||||
|
20
ext/date/tests/bug69336.phpt
Normal file
20
ext/date/tests/bug69336.phpt
Normal file
@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #69336 (Issues with "last day of <monthname>")
|
||||
--INI--
|
||||
date.timezone=UTC
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(date('d.m.Y',strtotime('last day of april')));
|
||||
var_dump(date('d.m.Y',strtotime('last tuesday of march 2015')));
|
||||
var_dump(date('d.m.Y',strtotime('last wednesday of march 2015')));
|
||||
var_dump(date('d.m.Y',strtotime('last wednesday of april 2015')));
|
||||
var_dump(date('d.m.Y',strtotime('last wednesday of march 2014')));
|
||||
var_dump(date('d.m.Y',strtotime('last wednesday of april 2014')));
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(10) "30.04.%d"
|
||||
string(10) "31.03.2015"
|
||||
string(10) "25.03.2015"
|
||||
string(10) "29.04.2015"
|
||||
string(10) "26.03.2014"
|
||||
string(10) "30.04.2014"
|
Loading…
Reference in New Issue
Block a user