Bug #78139 [Com]: timezone_open accepts invalid timezone string argument
Edit report at https://bugs.php.net/bug.php?id=78139&edit=1
ID: 78139
Comment by: info at towntasks dot com
Reported by: baby-luck at earthling dot net
Summary: timezone_open accepts invalid timezone string
argument
Status: Assigned
Type: Bug
Package: Date/time related
Operating System: Linux
PHP Version: 7.2.19
Assigned To: derick
Block user comment: N
Private report: N
New Comment:
Hello, If you are searching short task or partime jobs, you can follow or visit to apply jobs
https://towntasks.com/employer/saudi-aramco-career/
https://towntasks.com/employer/dhl-express/
https://towntasks.com/employer/freddie-mac/
https://towntasks.com/employer/amazon/
Previous Comments:
------------------------------------------------------------------------
[2019-06-12 17:31:19] baby-luck at earthling dot net
Did not know C,X were military offsets, thanks.
However, perhaps these qualify as a doc bug in themselves. The docs say "...an offset value
(+0200)" with no suggestion at all that a set of military offsets are also supported (probably
doesn't matter that they are case insensitive).
Regarding a) or b)... I would agree with those options; for the record my preference would be
heavily towards b).
------------------------------------------------------------------------
[2019-06-11 06:41:42] requinix@php.net
"C" and "X" are valid timezones: military notation representing each hourly
division from UTC+12 to UTC-12.
Either
a) this is a doc bug that it takes the first "word" in the string, or
b) this is a code bug and timezone_open should use the whole string
------------------------------------------------------------------------
[2019-06-11 06:30:14] baby-luck at earthling dot net
Description:
------------
timezone_open() accepts undocumented/nonsense/partial timezones.
The docs say "One of the supported timezone names or an offset value" but accepts
seemingly nonsense timezones without failure, and timezones found in the first non-whitespace block
in the argument string.
Test script:
---------------
$tz = timezone_open("x UTC");
echo '"x UTC" = '; var_dump($tz);
$tz = timezone_open("c");
echo '"c" = '; var_dump($tz);
$tz = timezone_open("xx UTC");
echo '"xx UTC" = '; var_dump($tz);
$tz = timezone_open("xUTC");
echo '"xUTC" = '; var_dump($tz);
$tz = timezone_open("UTCx");
echo '"UTCx" = '; var_dump($tz);
$tz = timezone_open("UTC xx");
echo '"UTC xx" = '; var_dump($tz);
Expected result:
----------------
"x UTC" = bool(false)
"c" = bool(false)
"xx UTC" = bool(false)
"xUTC" = bool(false)
"UTCx" = bool(false)
"UTC xx" = bool(false)
Actual result:
--------------
"x UTC" = object(DateTimeZone)#127 (2) {
["timezone_type"]=>
int(2)
["timezone"]=>
string(1) "X"
}
"c" = object(DateTimeZone)#128 (2) {
["timezone_type"]=>
int(2)
["timezone"]=>
string(1) "C"
}
"xx UTC" = bool(false)
"xUTC" = bool(false)
"UTCx" = bool(false)
"UTC xx" = object(DateTimeZone)#128 (2) {
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=78139&edit=1
Thread (7 messages)