用php减去时间。奇怪的结果
为什么延迟是2小时10分钟而不是10分钟 我想这和时区有关。现在是欧洲/赫尔辛基。但是我怎么才能得到两个时间戳之间的绝对差呢 编辑用php减去时间。奇怪的结果,php,time,Php,Time,为什么延迟是2小时10分钟而不是10分钟 我想这和时区有关。现在是欧洲/赫尔辛基。但是我怎么才能得到两个时间戳之间的绝对差呢 编辑 echo date('H:i', time()); // 10:15 echo date('H:i', strtotime($this->deadline)); // 10:05 $delay = time() - strtotime($this->deadline); echo date('H:i', $delay); // 02:10 $
echo date('H:i', time()); // 10:15
echo date('H:i', strtotime($this->deadline)); // 10:05
$delay = time() - strtotime($this->deadline);
echo date('H:i', $delay); // 02:10
$delay实际上不是一个正确的时间戳。这只是两个时间戳之间的差异,可能低至1。mktime()函数在这里可能很有用。试试下面的代码
echo time(); // 1339745334
echo strtotime($this->deadline); // 1339657500
如果您想显示实时,您需要根据差异设置时间格式。下面是一个示例函数,您可以根据需要进行扩展:
date_diff($time_start, $time_ends);
function date_diff($d1, $d2){
$d1 = (is_string($d1) ? strtotime($d1) : $d1);
$d2 = (is_string($d2) ? strtotime($d2) : $d2);
$diff_secs = abs($d1 - $d2);
$base_year = min(date("Y", $d1), date("Y", $d2));
$diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
return array(
"years" => date("Y", $diff) - $base_year,
"months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1,
"months" => date("n", $diff) - 1,
"days_total" => floor($diff_secs / (3600 * 24)),
"days" => date("j", $diff) - 1,
"hours_total" => floor($diff_secs / 3600),
"hours" => date("G", $diff),
"minutes_total" => floor($diff_secs / 60),
"minutes" => (int) date("i", $diff),
"seconds_total" => $diff_secs,
"seconds" => (int) date("s", $diff)
);
}
用法:
function\u time\u diff(“H:i”,“:”,$delay)
=>您的延迟已格式化。还发布您从time()和strotime($this->deadline)获得的时间戳值。我不明白为什么人们总是尝试在两个时间戳之间减去结果的日期。。。时间1-时间2=秒数。。。如果你想以分钟或小时/60,/3600我在这里如何使用mktime()?@sevenWonders:如果你不想从头开始,这里有一个例子:$time\u ends是$this->deadline,而$time\u start是当前时间
function time_diff($format,$seperator,$delay){
$days = floor($delay/86400);
$hours = floor(($delay%86400)/3600);
$mins = floor(($delay%3600)/60);
$secs = floor(($delay%60));
$format = explode($seperator,$format);
$return = "";
foreach($format as $value){
if(strlen($return) > 0){
$return .= $seperator;
}
switch($value){
case 'H':{
$return .= $hours;
break;
}
case 'i':{
$return .= $mins;
break;
}
case 'z':{
$return .= $days;
break;
}
case 's':{
$return .= $secs;
break;
}
}
return $return;
}