计算时间从百分之两个日期剩余
到目前为止,我尝试让两个日期之间的剩余,所以我可以用一个进度条时间的百分比..计算时间从百分之两个日期剩余
我有下面的代码我传递的两个日期并做了总和,但我得到一个错误。我不确定如果这个错误是由于日期格式,如果我可以改变它。
<?
$start = '2015-11-03 14:05:15';
$end = '2015-11-03 18:05:15';
$current = '2015-11-03 16:12:15';
$completed = (($current - $start)/($end - $start)) * 100;
?>
<? print $completed; ?>
我收到以下错误。 警告:除零除
你正在使用字符串(基本上,纯文本)...所以你不能计算任何东西。 (自1970年开始毫秒),您应该使用该时间戳
http://php.net/manual/fr/function.strtotime.php
$start = strtotime('2015-11-03 14:05:15');
$end = strtotime('2015-11-03 18:05:15');
$current = strtotime('2015-11-03 16:12:15');
辉煌,非常感谢。 –
不客气!祝你好运 ! –
这些都是字符串。你不能减去字符串,并期望事情发挥作用。发生的事情是这样的:
$start = '2015-11-03 14:05:15';
$end = '2015-11-03 18:05:15';
既然你做-
,PHP这些字符串转换为整数:
$new_start = (int)$start; // 2015
$new_end = (int)$end; // 2015
$new_end - $new_start -> 0
需要strtotime()
这些值回Unix时间戳,然后你CAN减去这些值,并以秒为单位获得差异。
辉煌,非常感谢。 –
strtotime将采用日期字符串并将其转换为unix标准时间为秒。
<?
$start = strtotime('2015-11-03 14:05:15');
$end = strtotime('2015-11-03 18:05:15');
$current = strtotime('2015-11-03 16:12:15');
$completed = (($current - $start)/($end - $start)) * 100;
?>
<? print $completed; ?>
辉煌,非常感谢。 –
我建议在strtotime上使用DateTime对象。 DateTime允许您指定创建时间戳的格式,而不是依靠strtotime来神奇地找出它。这使得它更可靠。
例如:
<?php
$start = DateTime::createFromFormat('Y-m-d H:i:s', '2015-11-03 14:05:15');
$end = DateTime::createFromFormat('Y-m-d H:i:s', '2015-11-03 18:05:15');
$current = DateTime::createFromFormat('Y-m-d H:i:s', '2015-11-03 16:12:15');
$completed = (($current->getTimestamp() - $start->getTimestamp())/($end->getTimestamp() - $start->getTimestamp())) * 100;
echo $completed;
?>
注:datetime对象在PHP 5.3中引入。任何旧版本都不会有DateTime。 (老实说,应该更新原因很多)
嘿,谢谢你。代码给出了第2行的错误。致命错误:调用未定义的方法DateTime :: createFromFormat() –
@LiamArmour DateTime :: createFromFormat()在PHP 5.3中引入。最有可能的是你的PHP版本较旧。所以 - 安装PHP> = 5.3会导致这个工作,否则你坚持strtotime():) –
辉煌,非常感谢。 –
你不能减去那样的字符串。你应该使用例如时间戳,见http://php.net/manual/en/function.strtotime.php – jeroen