|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2015-04-14 07:06 UTC] andreas at heigl dot org
[2021-01-21 14:51 UTC] cmb@php.net
-Status: Open
+Status: Verified
[2021-01-21 14:51 UTC] cmb@php.net
[2021-04-05 16:12 UTC] derick@php.net
-Status: Verified
+Status: Not a bug
[2021-04-05 16:12 UTC] derick@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Dec 14 07:00:01 2025 UTC |
Description: ------------ B - (B - A) == A SHOULD HOLD TRUE DOES HOLD TRUE USING UNIX TIMESTAMP MATH DOES NOT HOLD TRUE USING DateTime:sub() Test script: --------------- /* METHODOLOGY: B - (B - A) == A SHOULD HOLD TRUE DOES HOLD TRUE USING UNIX TIMESTAMP MATH DOES NOT HOLD TRUE USING DateTime:sub() */ $DF_MYSQL = 'Y-m-d H:i:s'; $dtB = DateTime::createFromFormat($DF_MYSQL, '2015-04-02 09:44:47'); $dtA = DateTime::createFromFormat($DF_MYSQL, '2014-02-16 02:00:00'); // DateInterval: B-A $diDiff = $dtA->diff($dtB); // Unix Timestamp: B-A $tsDiff = $dtB->getTimestamp() - $dtA->getTimestamp(); // REPORT DIFFERENCES /* NOTE: DIFFERENCE B-A IS $y => 1 $m => 1 $d => 17 $h => 7 $i => 44 $s => 47 */ print_r($diDiff); // Unix Timestamp: CALCULATE A FROM (B - DIFFERENCE) AND REPORT // NOTE: CORRECT RESULT, SAME AS $dtA: 2014-02-16 02:00:00 $tsShift = $dtB->getTimestamp() - $tsDiff; $dtOut = new DateTime(); $dtOut->setTimestamp($tsShift); print_r($dtOut); // DateInterval: CALCULATE A FROM (B - DIFFERENCE) AND REPORT // NOTE: INCORRECT RESULT, DIFFERENT FROM $dtA: 2014-02-13 02:00:00 $dtB->sub($diDiff); print_r($dtB); Expected result: ---------------- SEE SCRIPT COMMENTS Actual result: -------------- SEE SCRIPT COMMENTS