Doc #66104 [Opn->Ver]: strtotime reports "2011-02-31" and "2011-11-31" as valid dates

From: Date: Wed, 14 Feb 2018 05:45:56 +0000
Subject: Doc #66104 [Opn->Ver]: strtotime reports "2011-02-31" and "2011-11-31" as valid dates
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-15433@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=66104&edit=1 ID: 66104 Updated by: requinix@php.net Reported by: papaulsh at gmail dot com Summary: strtotime reports "2011-02-31" and "2011-11-31" as valid dates -Status: Open +Status: Verified Type: Documentation Problem Package: Date/time related Operating System: WAMP PHP Version: master-Git-2013-11-15 (Git) Block user comment: N Private report: N New Comment: I am rather tired of explaining this every other month. How about a note (warning?) that says something along the lines of how strtotime does not validate the input but instead tries to interpret it as a date in the most reasonable way possible. Month overflow is the most common issue by far; 2011-02-31 is not a valid date but the "most reasonable" interpretation of it is 3 days after 2011-02-28 which would be 2011-03-03. And other GNU/OSS date parsers act similarly. The other common issue is passing a timestamp and expecting to get that same value back (should have been "@timestamp") but strtotime reads it as some compound format without delimiters, like HHMMSSYYYY. Previous Comments: ------------------------------------------------------------------------ [2018-02-13 17:33:57] cmb@php.net This looks more like a documentation problem. Actually, strtotime() is very liberal in what it takes. 2011-02-31 is simply treated as 2011-03-03. Use checkdate() to check whether a given date is valid. ------------------------------------------------------------------------ [2015-09-30 14:54:12] boliveirasilva at gmail dot com The same problem occurs for the following dates. (year doesn't matter) '02/31/2014', '2016/02/31', '02/30/2015', '2014/02/30', '02/29/2015', '2015/02/29', '31-02-2015', '2015-02-31', '30-02-2015', '2015-02-30', '29-02-2015', '2015-02-29', '11/31/2014', '2016/11/31', '31-11-2015', '2015-11-31' ------------------------------------------------------------------------ [2013-11-15 23:32:08] papaulsh at gmail dot com Description: ------------ --- From manual page: http://www.php.net/function.strtotime#refsect1-function.strtotime-description --- My summary info should be sufficient to define the problem, if further clarification is needed please contact me. Test script: --------------- if (!strtotime("2011-02-31")) { echo "<br />Invalid date"; } Expected result: ---------------- Invalid date ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=66104&edit=1

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