Php 将日期转换为小时
我第一次尝试处理日期,我用Flash做了一些事情,但它是不同的 我有两个不同的日期,我想看看它们在时间和天数上的差异,我找到了太多的例子,但不是我想要的:Php 将日期转换为小时,php,date,hour,days,Php,Date,Hour,Days,我第一次尝试处理日期,我用Flash做了一些事情,但它是不同的 我有两个不同的日期,我想看看它们在时间和天数上的差异,我找到了太多的例子,但不是我想要的: <?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_d
<?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)
?>
如何将其转换为小时或天?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;
?>
请参阅有关的手册
遗憾的是,这是PHP5.3>唯一的特性。好吧,您可以始终使用date_diff,但这仅适用于PHP5.3.0+ 另一种选择是数学 如何将[秒]转换为小时或天 每分钟有60秒,也就是说每小时有3600秒
$hours = $seconds/3600;
当然,如果你需要几天
$days = $hours/24;
Grandwazoo提到了PHP5.3>的一种方法。对于较低版本,您可以将两个日期之间的秒数与一天中的秒数分开,以查找天数 连续几天,您都会:
$days = floor(($now_date - $key_date) / (60 * 60 * 24))
如果您想知道还有多少小时,可以使用模运算符%
$hours = floor((($now_date - $key_date) % * (60 * 60 * 24)) / 60 * 60)
我更喜欢使用epoch/unix时间增量。时间以秒表示,因此,您可以很快地除以3600表示小时,除以24*3600=86400表示天。如果您没有PHP5.3,您可以从userland使用此方法
很好的建议,不幸的是,我有一个5.22版本,但我下次会用它。回答得好,一件小事,在你的例子中,你在第四行有一个额外的大括号。所以$diffObject=$dateObject->diff$otherDateObject;应该是$diffObject=$dateObject->diff$otherDateObject;
<?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";
?>
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