質問
初めて日付を操作しようとしています。Flash でそれについて何かをしましたが、違いました。
2 つの異なる日付があり、時間と日数の違いを確認したいのですが、例が多すぎますが、探しているものは見つかりませんでした。
<?php
$now_date = strtotime (date ('Y-m-d H:i:s')); // the current date
$key_date = strtotime (date ("2009-11-21 14:08:42"));
print date ($now_date - $key_date);
// it returns an integer like 5813, 5814, 5815, etc... (I presume they are seconds)
?>
時間や日数に変換するにはどうすればよいですか?
解決
さて、あなたは常にdate_diffを使用することができますが、それは唯一のPHP 5.3.0 +
のためにあります選択肢は数学になります。
どのように私は時間や日数に[秒]変換することができますか?
毎分60秒、毎時3600秒であることを意味している、があります。
$hours = $seconds/3600;
そして、もちろん、あなたが日が必要な場合...
$days = $hours/24;
他のヒント
の DateTime
diff 関数は、 DateInterval
物体。このオブジェクトは、差分に関連する変数で構成されます。上の例と同様に、日、時、分、秒をクエリできます。
例:
<?php
$dateObject = new DateTime(); // No arguments means 'now'
$otherDateObject = new DateTime('2008-08-14 03:14:15');
$diffObject = $dateObject->diff($otherDateObject));
echo "Days of difference: ". $diffObject->days;
?>
についてはマニュアルを参照してください DateTime
.
残念ながら、これは PHP 5.3> のみの機能です。
あなたはユーザランドからこのメソッドを使用することができPHP5.3を持っていけない場合( WebDeveloper.comするから取られた)
function date_time_diff($start, $end, $date_only = true) // $start and $end as timestamps
{
if ($start < $end) {
list($end, $start) = array($start, $end);
}
$result = array('years' => 0, 'months' => 0, 'days' => 0);
if (!$date_only) {
$result = array_merge($result, array('hours' => 0, 'minutes' => 0, 'seconds' => 0));
}
foreach ($result as $period => $value) {
while (($start = strtotime('-1 ' . $period, $start)) >= $end) {
$result[$period]++;
}
$start = strtotime('+1 ' . $period, $start);
}
return $result;
}
$date_1 = strtotime('2005-07-31');
$date_2 = time();
$diff = date_time_diff($date_1, $date_2);
foreach ($diff as $key => $val) {
echo $val . ' ' . $key . ' ';
}
// Displays:
// 3 years 4 months 11 days
TheGrandWazooは> PHP 5.3するための方法を述べました。下のバージョンでは、あなたは、日数を見つけるために、その日の秒数を持つ2つの日付の間の秒数をdevideすることができます。
日のために、あなたが実行します。
$days = floor(($now_date - $key_date) / (60 * 60 * 24))
あなたがまだ残っているどのように多くの時間を知りたい場合は、剰余演算子(%)を使用することができます。
$hours = floor((($now_date - $key_date) % * (60 * 60 * 24)) / 60 * 60)
<?php
$now_date = strtotime (date ('Y-m-d H:i:s')); // the current date
$key_date = strtotime (date ("2009-11-21 14:08:42"));
$diff = $now_date - $key_date;
$days = floor($diff/(60*60*24));
$hours = floor(($diff-($days*60*60*24))/(60*60));
print $days." ".$hours." difference";
?>
私はエポック/ UNIXタイムデルタを使用することを好みます。時間は秒単位で表され、そのようにあなたは非常に迅速日間24 * 3600 = 86400により時間と除算のため3600で割ることができます。