Fixed bug #51393 (DateTime::createFromFormat() fails if format string contains timezone).

This commit is contained in:
Adam Harvey 2010-03-26 04:31:26 +00:00
parent f6bc260259
commit a2edb7f69c
5 changed files with 79 additions and 6 deletions

View File

@ -1,4 +1,4 @@
/* Generated by re2c 0.13.5 on Sun Mar 7 18:37:37 2010 */
/* Generated by re2c 0.13.5 on Fri Mar 26 12:26:56 2010 */
#line 1 "ext/date/lib/parse_date.re"
/*
+----------------------------------------------------------------------+
@ -526,7 +526,7 @@ static long timelib_parse_tz_cor(char **ptr)
char *begin = *ptr, *end;
long tmp;
while (**ptr != '\0') {
while (isdigit(**ptr) || **ptr == ':') {
++*ptr;
}
end = *ptr;

View File

@ -524,7 +524,7 @@ static long timelib_parse_tz_cor(char **ptr)
char *begin = *ptr, *end;
long tmp;
while (**ptr != '\0') {
while (isdigit(**ptr) || **ptr == ':') {
++*ptr;
}
end = *ptr;

View File

@ -1,4 +1,4 @@
/* Generated by re2c 0.13.5 on Sun Mar 7 14:12:01 2010 */
/* Generated by re2c 0.13.5 on Fri Mar 26 12:26:54 2010 */
#line 1 "ext/date/lib/parse_iso_intervals.re"
/*
+----------------------------------------------------------------------+
@ -183,7 +183,7 @@ static long timelib_parse_tz_cor(char **ptr)
char *begin = *ptr, *end;
long tmp;
while (**ptr != '\0') {
while (isdigit(**ptr) || **ptr == ':') {
++*ptr;
}
end = *ptr;

View File

@ -181,7 +181,7 @@ static long timelib_parse_tz_cor(char **ptr)
char *begin = *ptr, *end;
long tmp;
while (**ptr != '\0') {
while (isdigit(**ptr) || **ptr == ':') {
++*ptr;
}
end = *ptr;

View File

@ -0,0 +1,73 @@
--TEST--
Bug #51393 (DateTime::createFromFormat() fails if format string contains timezone)
--FILE--
<?php
$dt = DateTime::createFromFormat('O', '+0800');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('P', '+08:00');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('O', '-0800');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('P', '-08:00');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('[O]', '[+0800]');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('[P]', '[+08:00]');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('[O]', '[-0800]');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('[P]', '[-08:00]');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('O', 'GMT+0800');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('P', 'GMT+08:00');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('O', 'GMT-0800');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('P', 'GMT-08:00');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('[O]', '[GMT+0800]');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('[P]', '[GMT+08:00]');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('[O]', '[GMT-0800]');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('[P]', '[GMT-08:00]');
var_dump($dt->getOffset());
$dt = DateTime::createFromFormat('O', 'invalid');
var_dump($dt);
?>
--EXPECT--
int(28800)
int(28800)
int(-28800)
int(-28800)
int(28800)
int(28800)
int(-28800)
int(-28800)
int(28800)
int(28800)
int(-28800)
int(-28800)
int(28800)
int(28800)
int(-28800)
int(-28800)
bool(false)