#44399 [Bgs]: date (PHP 5) does not support O, but it's missing in the documentation

From: Date: Wed, 12 Mar 2008 08:34:39 +0000
Subject: #44399 [Bgs]: date (PHP 5) does not support O, but it's missing in the documentation
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-598@lists.php.net to get a copy of this message
ID: 44399 Updated by: tularis@php.net Reported By: robertbienert at gmx dot net Status: Bogus Bug Type: Documentation problem Operating System: all PHP Version: Irrelevant New Comment: This is in general related to all date/time functionality in PHP and is noted on the page linked by Gwynne. Next time, please read the responses people give you before asking for explenations. Previous Comments: ------------------------------------------------------------------------ [2008-03-11 12:17:48] robertbienert at gmx dot net So this is in general date() related or am I wrong? Well, why does my hack still work (obtaining a guessed timezone) and especially: Where is this documentated? ------------------------------------------------------------------------ [2008-03-11 11:52:41] gwynne@php.net This does not suggest that 'O' is unsupported. The error message you're seeing was introduced in PHP 5.1, and indicates that PHP had to guess your current timezone. This warning will appear regardless of the date string you try to use. The 'O' character is in fact fully supported by date() through all current versions of PHP. See <http://www.php.net/manual/en/function.date-default-timezone-set.php> for more information. ------------------------------------------------------------------------ [2008-03-11 11:25:11] robertbienert at gmx dot net OK, my fault, the error is called E_STRICT (int value 2048). And here follows a snippet from my code that emitted and caught the "error": <?php // custom error handler function error($no, $msg, $file, $line) { $msg = str_replace(array("\t", "\r\n", "\n", "\r"), ' ', $msg); echo 'Error (', $no, '): ', $msg, ' in ', $file, ' @line ', $line, "\n"; exit; } set_error_handler('error'); echo 'PHP version: ', PHP_VERSION, "\n"; // is 5.2.0-8+etch10 for me // now calling date to get _only_ the timezone offset $offset = date('O'); // this line is never reached (because of the exit, but it is a usual way to exit on errors): echo 'current timezone offset: ', $offset, "\n"; ?> The (plain) error message from PHP 5 follows: date(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead And it is E_STRICT as my error handler reports (got it in the $no variable). Hope this helps reproducing things. ------------------------------------------------------------------------ [2008-03-11 04:51:17] bjori@php.net Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. There is no such errorlevel in PHP. ------------------------------------------------------------------------ [2008-03-10 21:01:32] robertbienert at gmx dot net Well, my error handler caught a E_COMPAT when using date('O') on PHP 5. The message told be to use the TZ environment variable or code like I presented. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/44399 -- Edit this bug report at http://bugs.php.net/?id=44399&edit=1

« previous php.doc.bugs (#598) next »