0
$currentDate = time() - $printDate; //print date is a timestamp in mysql
$numberDays = floor($currentDate/(606024)); 
echo  "number of days: $numberDays </br>"; 
$editedDate = date("d ", $numberDays); 
echo "edited date: $editedDate";

ここに私の出力があります:

number of days: 15562 
edited date: 31 
number of days: 15562 
edited date: 31 
number of days: 15562 
edited date: 31

これにより 15562 と 31 が得られるので、ここで何か不足していますか? 日数の差を印刷するだけです

編集:これは、この問題を検索している誰かがたまたまそれに遭遇した場合に機能する最終的な出力です:

$currentDate = time();
echo "Current Time:";
echo $currentDate;
echo "</br>";
$editedPrintDate = strtotime($printDate);
echo "Print Date:";
echo $editedPrintDate;
echo "</br>";
$numberDays = floor(abs($currentDate - $editedPrintDate)/60/60/24); 
echo "Number of Days:";
echo floor($numberDays);
echo "</br>"; 
4

3 に答える 3

1

2 つの日付の間の秒数を計算し、除算して日を取得するだけです。

$numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24;

次に、 for ループを使用して日付を取得できます。

$numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24;

for ($i = 1; $i < $numDays; $i++) {
    echo date('Y m d', strtotime("+{$i} day", $smallestTimestamp)) . '<br />';
}

繰り返しになりますが、どのタイムスタンプが最も小さいかわからない場合は、min()関数 (strtotime の 2 番目の引数) を使用できます。

于 2012-08-10T14:54:04.993 に答える
0

タイムスタンプをDateTimeオブジェクトに変換してから、 DateTime::diffを使用することもできると思います。

于 2012-08-10T14:58:31.007 に答える
0

あなたのコードは決して機能しません。

date()1970 年 1 月 1 日を 0 とする時点を表すタイムスタンプが必要です。任意の数値 (/606024 値) を渡すことはできません。これは、もはや UNIX タイムスタンプではなく、「ほぼ 1 週間」を表す不安定な数値であるためです。

経過日数が必要な場合は、MySQL で計算を行うだけで、これを計算することができます。

SELECT DATEDIFF(now(), FROM_UNIXTIME(yourtimestampfield)) AS days
于 2012-08-10T14:59:37.573 に答える