php日期差异(以小时为单位)
如何使下面的代码以小时为单位转换天php日期差异(以小时为单位),php,datetime,date,Php,Datetime,Date,如何使下面的代码以小时为单位转换天 $timestart = date_create('02/11/2011' . $row->timestart); //$row->timestart returns time in 00:00:00 format $timestop = date_create('02/11/2011' . $row->timestop); //$row->timestop returns time in 00:00:00 format date_a
$timestart = date_create('02/11/2011' . $row->timestart); //$row->timestart returns time in 00:00:00 format
$timestop = date_create('02/11/2011' . $row->timestop); //$row->timestop returns time in 00:00:00 format
date_add($timestop, date_interval_create_from_date_string('2 days')); //add 2 days
$date_diff = date_diff($timestart, $timestop);
echo "Timespan: ";
echo $date_diff->format('%h hours');
echo "<br />";
$timestart=date\u create('02/11/2011'.$row->timestart)//$行->timestart以00:00:00格式返回时间
$timestop=date\u create('02/11/2011'.$row->timestop)//$行->timestop以00:00:00格式返回时间
日期添加($timestop,date\u interval\u create\u from\u date\u string('2天'))//加2天
$date\u diff=date\u diff($timestart,$timestop);
回声“时间跨度:”;
echo$date_diff->格式(“%h小时”);
回声“
”;
我如何获得已用时间的hours:minutes:seconds
?我试图继续使用date\u diff
函数。date\u diff()的结果是类的对象。这样的对象有一个非常有用的属性-$days
:它是开始日期和结束日期之间的总天数。此外,它存储(作为其公共属性)以小时、分钟和秒为单位的差异
因此,我想,您需要的只是从$date_diff变量中提取这些属性的值,然后将24*$days
添加到小时数中。)所有这些都可以包装成一个简单的函数:
function hms_date_diff(DateInterval $date_diff) {
$total_days = $date_diff->days;
$hours = $date_diff->h;
if ($total_days !== FALSE) {
$hours += 24 * $total_days;
}
$minutes = $date_diff->i;
$seconds = $date_diff->s;
return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
}
至于DateDiff::format,则表示
DateInterval::format()方法不重新计算结转
时间字符串或日期段中的点
date_diff()的结果是类的对象。这样的对象有一个非常有用的属性-$days
:它是开始日期和结束日期之间的总天数。此外,它存储(作为其公共属性)以小时、分钟和秒为单位的差异
因此,我想,您需要的只是从$date_diff变量中提取这些属性的值,然后将24*$days
添加到小时数中。)所有这些都可以包装成一个简单的函数:
function hms_date_diff(DateInterval $date_diff) {
$total_days = $date_diff->days;
$hours = $date_diff->h;
if ($total_days !== FALSE) {
$hours += 24 * $total_days;
}
$minutes = $date_diff->i;
$seconds = $date_diff->s;
return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
}
至于DateDiff::format,则表示
DateInterval::format()方法不重新计算结转
时间字符串或日期段中的点
DateInterval
对象,由date\u diff
返回,分别存储每个时间段、秒、分钟、小时、天、月和年
由于差异为2天,所以hours属性为0,这就是您得到的。由
date\u diff
返回的DateInterval
对象分别存储每个时间段、秒、分钟、小时、天、月和年
由于差异为2天,小时属性为0,这就是您得到的。您应该使用对象样式
DateTime
@Truth,过程样式有什么问题?它似乎给出了相同的结果。它确实给出了相同的结果,只是处理DateTime对象比处理过程函数容易得多。如果$date\u diff->format('H:i:s')不起作用,您可能会遇到某种输入格式问题,无法正确地将其转换回。例如,确保前两行中的日期和timestart/timestop变量之间有空格。您应该使用对象样式DateTime
@Truth,过程样式有什么问题?它似乎给出了相同的结果。它确实给出了相同的结果,只是处理DateTime对象比处理过程函数容易得多。如果$date\u diff->format('H:i:s')不起作用,您可能会遇到某种输入格式问题,无法正确地将其转换回。例如,确保日期和前两行中的timestart/timestop变量之间有空格