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(1138888800)
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=36266&edit=1

Reply via email to