4

PHPを使用して日付を減算し、結果を日-時間-分-秒の形式で表示したいと思います。phpを使用してこれを行う方法。タイムスタンプを使用してこれを試しましたが、適切な値が得られません。提案してください

例:日付2012-04-2719:30:56から日付2012-04-2719:37:56

私はこのコードを使用しました

if(strtotime($history['datetimestamp']) > strtotime($lasttime)) {

                 $totalelapsed1 = (strtotime($history['datetimestamp'])-strtotime($lasttime)); 




                     if($totalelapsed1 > 60 ) {
                         $sec = $totalelapsed1%60;
                         $min = round($totalelapsed1/60 , 0);

                         $minute = $min + $minute;
                         $second = $sec + $second;

                        // echo $min. " min " .$sec." sec";

                     } else {
                         //echo "0 min " . $totalelapsed1." sec";

                         $minute = 0 + $minute;
                         $second = $totalelapsed1 + $second;

                    }



                } else {
                     $minute = 0 + $minute;
                     $second = 0 + $second;
                    // echo "0 min 0 sec";
                }
4

4 に答える 4

10

VolkerKで差をとるために2つの日付と時刻を引く方法から

このように使用する必要があります:-

<?php

//$now = new DateTime(); // current date/time
$now = new DateTime("2010-07-28 01:11:50");
$ref = new DateTime("2010-07-30 05:56:40");
$diff = $now->diff($ref);
printf('%d days, %d hours, %d minutes', $diff->d, $diff->h, $diff->i);
prints 2 days, 4 hours, 44 minutes

http://docs.php.net/datetime.diffを参照してください

編集:しかし、たとえば有効期限の日付/時刻をテーブルに保存してから、次のようなクエリを実行することで、問題をデータベース側にシフトすることもできます...WHERE key='7gedufgweufg' AND expires<Now() 多くのrdbmsは、日付/時刻の計算を適切にサポートしています。

リンクURL:-2つの日付と時刻を減算して差を得る方法

http://www.webpronews.com/calculating-the-difference-between-two-dates-using-php-2005-11

于 2012-05-22T10:34:51.230 に答える
5

DateTimeオブジェクトとDateIntervalオブジェクトを使用することをお勧めします。

$date1 = new DateTime("2007-03-24");
$date2 = new DateTime("2009-06-26");
$interval = $date1->diff($date2);
echo "days difference ".$interval->d." days "; 

続きを読むphpDateTime::diffマニュアル

于 2012-05-22T10:30:37.113 に答える
0

DateTime:diff()を使用してみてください。

そのページに例が示されています。

于 2012-05-22T10:34:30.327 に答える
0

このスクリプトは私の問題を解決します

$date1 = date("d-m-Y H:i:s",strtotime($date1));

$date2 = date("d-m-Y H:i:s",strtotime($lasttime));

$diff = abs(strtotime($date2) - strtotime($date1));

$years   = floor($diff / (365*60*60*24));  $months  = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));  $days    = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

$hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60));  $minuts  = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60);  $seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minuts*60)); 

printf("%d years, %d months, %d days, %d hours, %d minuts\n, %d seconds\n", $years, $months, $days, $hours, $minuts, $seconds);
于 2012-05-24T11:33:36.837 に答える