|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2018-03-01 14:28 UTC] diego at agudo dot eti dot br
Description:
------------
strtotime returning wrong date on -1 month
Test script:
---------------
$data = '2018-03-31';
print_r($data);
echo "\n\n";
$data = strtotime($data);
print_r($data);
echo "\n\n";
$data = date("Y-m-d", $data);
print_r($data);
echo "\n\n";
$data = strtotime($data);
print_r($data);
echo "\n\n";
$data = date("Y-m-d", strtotime('-1 month', $data));
print_r($data);
echo "\n\n";
Expected result:
----------------
2018-02-28
Actual result:
--------------
2018-03-03
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 20:00:01 2025 UTC |
Sorry but I disagree, should be 2018-02-28. Oracle/PostgreSQL/MySQL works like a charm. If I do like you said, I lost 2~3 days. SAMPLE MySQL: SELECT DATE_ADD(DATE_ADD(NOW(),INTERVAL + 30 DAY), INTERVAL -1 MONTH) ORACLE: SELECT ADD_MONTHS(TO_DATE('2018-03-31','YYYY-MM-DD'),-1) FROM DUAL