1

PHPを使用して2つの日付を減算しようとしています。Dateone はデータベースに保存され、datetwo は現在の日付です。今、私はこの奇妙なシナリオを持っています: Dateone is 23-03-13 Date two is 02-04-13

異なる減算方法を使用すると、異なる結果が得られます。

方法 1 - 戻り値 -21

$sqldate ="SELECT exam_date FROM exam_table";
$fetchdate = mysql_query($sqldate);
$rowdate = mysql_fetch_array($fetchdate);
//Fetch the date stored in the database
$dateone = $rowdate['exam_date'];
//Calculate the current date today
$datetwo =date('d-m-y');
//Calculate the diff between the two dates
$datediff = $datetwo-$dateone;

この場合、$datediff は -21 を返します。

方法 2 - -7639 を返します

$sqldate ="SELECT exam_date FROM exam_table";
$fetchdate = mysql_query($sqldate);
$rowdate = mysql_fetch_array($fetchdate);
//Fetch the date stored in the database
$dateone = $rowdate['exam_date'];
//Calculate the current date
$datetwo =date('d-m-y');
//Calculate the diff between the two dates
$datetime1 = strtotime("$dateone");
$datetime2 = strtotime("$datetwo");
//seconds between the two times
$secs = $datetime2 - $datetime1;
$days = $secs / 86400;

このシナリオでは、$days は -7639 を返します

4

5 に答える 5

0

ええ問題は、日付形式が違いを得る標準ではないためです。正しい違いを得るには、現在の形式を現在の形式に通知し、標準形式に変換する必要があります。

$datetime1 = DateTime::createFromFormat('d-m-Y', '23-03-13'); #In you case it is considering 13-03-2023
$datetime1->format('d-m-YY');
$datetime2 = DateTime::createFromFormat('d-m-Y', '02-04-13'); #In you case it is considering 13-04-2002
$datetime2->format('d-m-YY');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days'); #output +10 days

CodeViper デモ。

注: PHP のバージョンは >= 5.3.0 である必要があります。

于 2013-04-02T09:48:46.053 に答える