#36266 [WFx]: strtotime behavior change
ID: 36266 User updated by: tim at komta dot com Reported By: tim at komta dot com Status: Wont fix Bug Type: Date/time related Operating System: Windows XP Pro SP2 PHP Version: 5CVS-2006-02-02 (snap) Assigned To: derick New Comment: Unintentional changes in function behavior = bug. This whole strtotime update has caused nothing but trouble for me. I disagree that it's very strange. Ask the next 10 people you see what today's date is. If ANY of them just say 13, I'll be extremely surprised. Ask them what year it is. I guarantee no one will say 6. Conversely, in basic conversation, asking what time it is will often get you an integer in response. The purpose of this function is to take strings and convert them to times. Except now, it only converts SOME strings, breaking functionality with previous versions. Previous Comments: [2006-02-13 09:36:48] [EMAIL PROTECTED] Guessing that two consequetive numbers mean an hour is very strange. It could just as well have been the day of the month, the month or even the year. That this worked in older versions is most likely a sideeffect of something and I do not plan to made a hack for this in the new parser. [2006-02-02 22:29:13] judas dot iscariote at gmail dot com $php5-debug strtotime.php bool(false) PHP 5.1.3-dev (cli) (built: Feb 2 2006 18:19:34) (DEBUG) $php4-debug strtotime.php int(113800) PHP 4.4.3-dev (cli) (built: Feb 1 2006 13:49:49) (DEBUG) [2006-02-02 21:25:03] tim at komta dot com strtotime('11') exhibits the same behavior change - seems that strtotime can no longer handle only 2 digits for a time. [2006-02-02 20:57:17] [EMAIL PROTECTED] Assigned to the maintainer. [2006-02-02 20:42:09] tim at komta dot com Description: Previously valid strtotime() attempts no longer parse to a time. This worked prior to PHP 5.1, I believe. Reproduce code: --- ?php echo strtotime('02/02/2006 11'); ? Expected result: 1138896000 (with the server timezone set to EST) Actual result: -- FALSE -- Edit this bug report at http://bugs.php.net/?id=36266edit=1
#36266 [WFx]: strtotime behavior change
ID: 36266 User updated by: tim at komta dot com Reported By: tim at komta dot com Status: Wont fix Bug Type: Date/time related Operating System: Windows XP Pro SP2 PHP Version: 5CVS-2006-02-02 (snap) Assigned To: derick New Comment: By that logic, 1100 shouldn't work either, and yet, it does. Intriguingly, it works, not to the YEAR 1100, but to a time, 11:00:00 AM. Previous Comments: [2006-02-13 15:33:32] [EMAIL PROTECTED] The documentation says strtotime -- Parse about any English textual datetime description into a Unix timestamp. 11 is clearly not a textual datetime description. [2006-02-13 15:25:59] tim at komta dot com Unintentional changes in function behavior = bug. This whole strtotime update has caused nothing but trouble for me. I disagree that it's very strange. Ask the next 10 people you see what today's date is. If ANY of them just say 13, I'll be extremely surprised. Ask them what year it is. I guarantee no one will say 6. Conversely, in basic conversation, asking what time it is will often get you an integer in response. The purpose of this function is to take strings and convert them to times. Except now, it only converts SOME strings, breaking functionality with previous versions. [2006-02-13 09:36:48] [EMAIL PROTECTED] Guessing that two consequetive numbers mean an hour is very strange. It could just as well have been the day of the month, the month or even the year. That this worked in older versions is most likely a sideeffect of something and I do not plan to made a hack for this in the new parser. [2006-02-02 22:29:13] judas dot iscariote at gmail dot com $php5-debug strtotime.php bool(false) PHP 5.1.3-dev (cli) (built: Feb 2 2006 18:19:34) (DEBUG) $php4-debug strtotime.php int(113800) PHP 4.4.3-dev (cli) (built: Feb 1 2006 13:49:49) (DEBUG) [2006-02-02 21:25:03] tim at komta dot com strtotime('11') exhibits the same behavior change - seems that strtotime can no longer handle only 2 digits for a time. 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/36266 -- Edit this bug report at http://bugs.php.net/?id=36266edit=1
#36266 [WFx]: strtotime behavior change
ID: 36266 User updated by: tim at komta dot com Reported By: tim at komta dot com Status: Wont fix Bug Type: Date/time related Operating System: Windows XP Pro SP2 PHP Version: 5CVS-2006-02-02 (snap) Assigned To: derick New Comment: --WORKAROUND-- For anyone wishing to replicate the prior behavior, I wrote this regex to use with preg_replace() immediately prior to calling the strtotime() on your value. $value = preg_replace('#(.*)(^|\s)([0-9]{1,2})$#', '$1$2${3}00', $value); $timestamp = strtotime($value); This function call adds two zeroes to a 1 or two digit number either on it's own (11) or trailing a whitespace character (2/13/06 11). It will not match a two-digit year (ie, in 2/13/06, it will not match 06) Previous Comments: [2006-02-13 15:38:49] tim at komta dot com By that logic, 1100 shouldn't work either, and yet, it does. Intriguingly, it works, not to the YEAR 1100, but to a time, 11:00:00 AM. [2006-02-13 15:33:32] [EMAIL PROTECTED] The documentation says strtotime -- Parse about any English textual datetime description into a Unix timestamp. 11 is clearly not a textual datetime description. [2006-02-13 15:25:59] tim at komta dot com Unintentional changes in function behavior = bug. This whole strtotime update has caused nothing but trouble for me. I disagree that it's very strange. Ask the next 10 people you see what today's date is. If ANY of them just say 13, I'll be extremely surprised. Ask them what year it is. I guarantee no one will say 6. Conversely, in basic conversation, asking what time it is will often get you an integer in response. The purpose of this function is to take strings and convert them to times. Except now, it only converts SOME strings, breaking functionality with previous versions. [2006-02-13 09:36:48] [EMAIL PROTECTED] Guessing that two consequetive numbers mean an hour is very strange. It could just as well have been the day of the month, the month or even the year. That this worked in older versions is most likely a sideeffect of something and I do not plan to made a hack for this in the new parser. [2006-02-02 22:29:13] judas dot iscariote at gmail dot com $php5-debug strtotime.php bool(false) PHP 5.1.3-dev (cli) (built: Feb 2 2006 18:19:34) (DEBUG) $php4-debug strtotime.php int(113800) PHP 4.4.3-dev (cli) (built: Feb 1 2006 13:49:49) (DEBUG) 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/36266 -- Edit this bug report at http://bugs.php.net/?id=36266edit=1
#36266 [NEW]: strtotime behavior change
From: tim at komta dot com Operating system: Windows XP Pro SP2 PHP version: 5CVS-2006-02-02 (snap) PHP Bug Type: Date/time related Bug description: strtotime behavior change Description: Previously valid strtotime() attempts no longer parse to a time. This worked prior to PHP 5.1, I believe. Reproduce code: --- ?php echo strtotime('02/02/2006 11'); ? Expected result: 1138896000 (with the server timezone set to EST) Actual result: -- FALSE -- Edit bug report at http://bugs.php.net/?id=36266edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=36266r=trysnapshot44 Try a CVS snapshot (PHP 5.1): http://bugs.php.net/fix.php?id=36266r=trysnapshot51 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=36266r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=36266r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=36266r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=36266r=needtrace Need Reproduce Script:http://bugs.php.net/fix.php?id=36266r=needscript Try newer version:http://bugs.php.net/fix.php?id=36266r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=36266r=support Expected behavior:http://bugs.php.net/fix.php?id=36266r=notwrong Not enough info: http://bugs.php.net/fix.php?id=36266r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=36266r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=36266r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=36266r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=36266r=dst IIS Stability:http://bugs.php.net/fix.php?id=36266r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=36266r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=36266r=float No Zend Extensions: http://bugs.php.net/fix.php?id=36266r=nozend MySQL Configuration Error:http://bugs.php.net/fix.php?id=36266r=mysqlcfg
#36266 [Asn]: strtotime behavior change
ID: 36266 User updated by: tim at komta dot com Reported By: tim at komta dot com Status: Assigned Bug Type: Date/time related Operating System: Windows XP Pro SP2 PHP Version: 5CVS-2006-02-02 (snap) Assigned To: derick New Comment: strtotime('11') exhibits the same behavior change - seems that strtotime can no longer handle only 2 digits for a time. Previous Comments: [2006-02-02 20:57:17] [EMAIL PROTECTED] Assigned to the maintainer. [2006-02-02 20:42:09] tim at komta dot com Description: Previously valid strtotime() attempts no longer parse to a time. This worked prior to PHP 5.1, I believe. Reproduce code: --- ?php echo strtotime('02/02/2006 11'); ? Expected result: 1138896000 (with the server timezone set to EST) Actual result: -- FALSE -- Edit this bug report at http://bugs.php.net/?id=36266edit=1
#35983 [Bgs]: strtotime(string, now) behavior has changed
ID: 35983 User updated by: tim at komta dot com Reported By: tim at komta dot com Status: Bogus Bug Type: Date/time related Operating System: Windows XP Pro, Server 2003 PHP Version: 5.1.2 Assigned To: derick New Comment: That's quite unfortunate that this is the newly intended behavior, both in the inadequate documentation and the actual breaking from prior behavior. For such a major change, I really feel that the documentation of the function should have been updated to reflect this. I rely (relied, I guess) on this to work for expanding to ranges...when my users search for yesterday they really meant yesterday 00:00:00 through yesterday 23:59:59 which was easily handled by using different relative points in the day. This new behavior completely breaks my search engine, and as of now, I don't see any way to fix this, short of having my users type in a more explicit date range they want. I'm not sure that I see the inconsistancy. yesterday, relative to a timestamp, should return a timestamp that's 24 hours less than the timestamp given. I see it as far more inconsistant that it could be anywhere from 24 hours less to 47:59:59 less. Previous Comments: [2006-01-13 12:01:50] [EMAIL PROTECTED] This is proper behavior. In the past PHP has been inconsistent regarding different terms like this. With the new code in PHP 5.1 this all works the same. What you want to do is by using: -1 day or 1 day ago. [2006-01-13 09:15:00] [EMAIL PROTECTED] Assigned to the date man. [2006-01-12 19:51:13] tim at komta dot com Description: Prior to PHP 5.1.2 (potentially earlier, just only noticed it) strtotime(), when used with the optional 'now' argument, would return the time using the full 'now'. Now it returns 00:00 on the date of the 'now', ignoring hours, minutes, and seconds. Reproduce code: --- $this_morning = strtotime('today 00:00:00'); $tonight= strtotime('today 23:59:59'); echo date('m/d Hi', strtotime('yesterday', $this_morning)).'br/'; echo date('m/d Hi', strtotime('yesterday', $tonight)).'br/'; Expected result: (as of 2005-01-12): 01/11 01/11 2359 Actual result: -- (as of 2005-01-12): 01/11 01/11 -- Edit this bug report at http://bugs.php.net/?id=35983edit=1
#35983 [NEW]: strtotime(string, now) behavior has changed
From: tim at komta dot com Operating system: Windows XP Pro, Server 2003 PHP version: 5.1.2 PHP Bug Type: Date/time related Bug description: strtotime(string, now) behavior has changed Description: Prior to PHP 5.1.2 (potentially earlier, just only noticed it) strtotime(), when used with the optional 'now' argument, would return the time using the full 'now'. Now it returns 00:00 on the date of the 'now', ignoring hours, minutes, and seconds. Reproduce code: --- $this_morning = strtotime('today 00:00:00'); $tonight= strtotime('today 23:59:59'); echo date('m/d Hi', strtotime('yesterday', $this_morning)).'br/'; echo date('m/d Hi', strtotime('yesterday', $tonight)).'br/'; Expected result: (as of 2005-01-12): 01/11 01/11 2359 Actual result: -- (as of 2005-01-12): 01/11 01/11 -- Edit bug report at http://bugs.php.net/?id=35983edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=35983r=trysnapshot44 Try a CVS snapshot (PHP 5.1): http://bugs.php.net/fix.php?id=35983r=trysnapshot51 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=35983r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=35983r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=35983r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=35983r=needtrace Need Reproduce Script:http://bugs.php.net/fix.php?id=35983r=needscript Try newer version:http://bugs.php.net/fix.php?id=35983r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=35983r=support Expected behavior:http://bugs.php.net/fix.php?id=35983r=notwrong Not enough info: http://bugs.php.net/fix.php?id=35983r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=35983r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=35983r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=35983r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=35983r=dst IIS Stability:http://bugs.php.net/fix.php?id=35983r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=35983r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=35983r=float No Zend Extensions: http://bugs.php.net/fix.php?id=35983r=nozend MySQL Configuration Error:http://bugs.php.net/fix.php?id=35983r=mysqlcfg
#35480 [Fbk-Opn]: Persistent connections + unknown column crashes
ID: 35480 User updated by: tim at komta dot com Reported By: tim at komta dot com -Status: Feedback +Status: Open Bug Type: PDO related Operating System: Windows XP PHP Version: 5.1.1 Assigned To: georg New Comment: With the snapshot linked by Sniper, the problem is still there. Wez, I think I'm misunderstanding what you're asking...The method of getting a backtrace that I know of (debug_backtrace()) requires PHP to be running. The script crashes in such a way that no output ever goes to the user agent, in spite of no output buffering. Is there something else I should be doing? - Tim Previous Comments: [2005-11-30 14:07:51] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5.1-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.1-win32-latest.zip [2005-11-30 03:35:09] [EMAIL PROTECTED] tim, can you provide a backtrace? [2005-11-29 23:09:53] [EMAIL PROTECTED] Georg, this seems to be the same issue caused by protocol binary incompatibility. [2005-11-29 23:04:24] tim at komta dot com Oops, sorry about that, it's MySQL 5.0.15 [2005-11-29 21:55:05] [EMAIL PROTECTED] And what MySQL version? 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/35480 -- Edit this bug report at http://bugs.php.net/?id=35480edit=1
#35480 [NEW]: Persistent connections + unknown column crashes
From: tim at komta dot com Operating system: Windows XP PHP version: 5.1.1 PHP Bug Type: PDO related Bug description: Persistent connections + unknown column crashes Description: Using a persistent connection with PDO (mysql tested) and then executing a query with an unknown column will crash PHP 5.1.1, and take Apache with it. This has been reproduced on two seperate systems here at the office already. Both systems use Apache 2.0.54 as a module, with PHP 5.1.1 Reproduce code: --- ?php $pdo = new PDO('mysql:host=HOST;dbname=mysql', USER, PASSWORD, array(PDO::ATTR_PERSISTENT = TRUE)); $pdo-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $pdo-query('SELECT frank FROM mysql.user LIMIT 20'); ? Expected result: Expect a warning, such as Warning: PDO::query() [function.query]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'frank' in 'field list' in C:\Documents and Settings\Tim\workspace\hxpa SVN\temp.php on line 5 Actual result: -- PHP (Apache is reported) crashes. -- Edit bug report at http://bugs.php.net/?id=35480edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=35480r=trysnapshot4 Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=35480r=trysnapshot50 Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=35480r=trysnapshot51 Fixed in CVS:http://bugs.php.net/fix.php?id=35480r=fixedcvs Fixed in release:http://bugs.php.net/fix.php?id=35480r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=35480r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=35480r=needscript Try newer version: http://bugs.php.net/fix.php?id=35480r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=35480r=support Expected behavior: http://bugs.php.net/fix.php?id=35480r=notwrong Not enough info: http://bugs.php.net/fix.php?id=35480r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=35480r=submittedtwice register_globals:http://bugs.php.net/fix.php?id=35480r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=35480r=php3 Daylight Savings:http://bugs.php.net/fix.php?id=35480r=dst IIS Stability: http://bugs.php.net/fix.php?id=35480r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=35480r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=35480r=float No Zend Extensions: http://bugs.php.net/fix.php?id=35480r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=35480r=mysqlcfg
#35480 [Fbk-Opn]: Persistent connections + unknown column crashes
ID: 35480 User updated by: tim at komta dot com Reported By: tim at komta dot com -Status: Feedback +Status: Open Bug Type: PDO related Operating System: Windows XP PHP Version: 5.1.1 New Comment: Oops, sorry about that, it's MySQL 5.0.15 Previous Comments: [2005-11-29 21:55:05] [EMAIL PROTECTED] And what MySQL version? [2005-11-29 21:10:03] tim at komta dot com Description: Using a persistent connection with PDO (mysql tested) and then executing a query with an unknown column will crash PHP 5.1.1, and take Apache with it. This has been reproduced on two seperate systems here at the office already. Both systems use Apache 2.0.54 as a module, with PHP 5.1.1 Reproduce code: --- ?php $pdo = new PDO('mysql:host=HOST;dbname=mysql', USER, PASSWORD, array(PDO::ATTR_PERSISTENT = TRUE)); $pdo-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $pdo-query('SELECT frank FROM mysql.user LIMIT 20'); ? Expected result: Expect a warning, such as Warning: PDO::query() [function.query]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'frank' in 'field list' in C:\Documents and Settings\Tim\workspace\hxpa SVN\temp.php on line 5 Actual result: -- PHP (Apache is reported) crashes. -- Edit this bug report at http://bugs.php.net/?id=35480edit=1
#28088 [Com]: strtotime() cannot convert 00 hours
ID: 28088 Comment by: tim at komta dot com Reported By: asif at evoknow dot com Status: Assigned Bug Type: Date/time related Operating System: Red Hat Linux PHP Version: 4.3.4 Assigned To: derick New Comment: '00' is the designation for midnight as returned by the date() function, as in: date('m/d/Y Hi') For sanity's sake, it really should work. Previous Comments: [2004-06-29 06:45:09] asif at evoknow dot com ransico: isn't 0045 supposed to be 2445 ? asif: err .. I am not very sure about that. asif: but .. the bug is still there even with 2445. asif: did you try 2445 with the 'reproduce code'? asif: I did, and the result is same. [2004-06-09 03:38:43] ransico at iinet dot net dot au isn't 0045 supposed to be 2445 ? thats what my alarm clock says at that time anyway [2004-04-21 11:02:01] asif at evoknow dot com Description: When a string like 04/04/04 0045 is passed to strtotime(), it returns -1. Reproduce code: --- echo The following line rightly shows the correct date time\r\n; echo date(m/d/y Hi, strtotime(04/04/04 2345)); echo \r\nBut the following line fails to show the correct date time\r\n; echo date(m/d/y Hi, strtotime(04/04/04 0045)).\r\n; Expected result: The following line rightly shows the correct date time 04/04/04 2345 But the following line fails to show the correct date time 04/04/04 0045 Actual result: -- The following line rightly shows the correct date time 04/04/04 2345 But the following line fails to show the correct date time 01/01/70 0559 -- Edit this bug report at http://bugs.php.net/?id=28088edit=1
#28088 [Com]: strtotime() cannot convert 00 hours
ID: 28088 Comment by: tim at komta dot com Reported By: asif at evoknow dot com Status: Assigned Bug Type: Date/time related Operating System: Red Hat Linux PHP Version: 4.3.4 Assigned To: derick New Comment: BTW, strtotime DOES work with input such as 8/20/2004 00:23, it's only without the colon that it seems to fail. Previous Comments: [2004-08-20 02:46:16] tim at komta dot com '00' is the designation for midnight as returned by the date() function, as in: date('m/d/Y Hi') For sanity's sake, it really should work. [2004-06-29 06:45:09] asif at evoknow dot com ransico: isn't 0045 supposed to be 2445 ? asif: err .. I am not very sure about that. asif: but .. the bug is still there even with 2445. asif: did you try 2445 with the 'reproduce code'? asif: I did, and the result is same. [2004-06-09 03:38:43] ransico at iinet dot net dot au isn't 0045 supposed to be 2445 ? thats what my alarm clock says at that time anyway [2004-04-21 11:02:01] asif at evoknow dot com Description: When a string like 04/04/04 0045 is passed to strtotime(), it returns -1. Reproduce code: --- echo The following line rightly shows the correct date time\r\n; echo date(m/d/y Hi, strtotime(04/04/04 2345)); echo \r\nBut the following line fails to show the correct date time\r\n; echo date(m/d/y Hi, strtotime(04/04/04 0045)).\r\n; Expected result: The following line rightly shows the correct date time 04/04/04 2345 But the following line fails to show the correct date time 04/04/04 0045 Actual result: -- The following line rightly shows the correct date time 04/04/04 2345 But the following line fails to show the correct date time 01/01/70 0559 -- Edit this bug report at http://bugs.php.net/?id=28088edit=1