Bug #71865 [Nab]: strtotime treat as valid date
Edit report at https://bugs.php.net/bug.php?id=71865&edit=1
ID: 71865
Updated by: derick@php.net
Reported by: finull at vip dot qq dot com
Summary: strtotime treat as valid date
Status: Not a bug
Type: Bug
Package: Date/time related
Operating System: MacOS X 10.11
PHP Version: 5.6.19
Block user comment: N
Private report: N
New Comment:
As a hint, if you get weird results, use date_parse, and it will tell you how it (tried to) parse
the string:
derick@whisky:~ $ php -r 'var_dump(date_parse("1458363078"));'
Command line code:1:
array(12) {
'year' =>
int(1458)
'month' =>
int(1)
'day' =>
int(363)
'hour' =>
bool(false)
'minute' =>
bool(false)
'second' =>
bool(false)
'fraction' =>
bool(false)
'warning_count' =>
int(1)
'warnings' =>
array(1) {
[11] =>
string(27) "The parsed date was invalid"
}
'error_count' =>
int(3)
'errors' =>
array(3) {
[7] =>
string(20) "Unexpected character"
[8] =>
string(20) "Unexpected character"
[9] =>
string(20) "Unexpected character"
}
'is_localtime' =>
bool(false)
}
Previous Comments:
------------------------------------------------------------------------
[2016-03-22 03:45:08] finull at vip dot qq dot com
got it.
Thanks a lot!
------------------------------------------------------------------------
[2016-03-22 03:38:46] requinix@php.net
https://3v4l.org/TM23M
1458363078 is parsed as 1458=year, 363=day, then invalid characters (PostgreSQL compound format)
1458373078 is parsed as 14=hour, 58=minute, 37=second, year=3078 (time and date formats)
Don't pass Unix timestamps to strtotime.
------------------------------------------------------------------------
[2016-03-22 03:23:44] finull at vip dot qq dot com
I also got this output
strtotime(1458363078) returns FALSE
strtotime(1458373078) returns 34972066717
Why?
------------------------------------------------------------------------
[2016-03-21 07:26:12] requinix@php.net
You've discovered the HHMMSSYYYY format.
------------------------------------------------------------------------
[2016-03-21 07:13:17] finull at vip dot qq dot com
Description:
------------
Found this bug when I use strtotime to checkout if input was valid date.
strtotime(1458533078) should return FALSE, but it does't;
Test script:
---------------
$timestamp = strtotime(1458533078);
// output: 34971980333
echo $timestamp;
Expected result:
----------------
FALSE
Actual result:
--------------
34971980333
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=71865&edit=1
Thread (6 messages)