PHP 中两个时间戳之间的差异
Difference between two time stamps in PHP
在我看来,这应该回显 11 小时,但 returns 12;我错过了什么?
$start_time = "06:00";
$end_time = "17:00";
$LOD = date("H:i", ((strtotime($end_time) - strtotime($start_time))));
echo "Length of day: " . $LOD . " hours";
更新:运行 在 MAMP 环境中的我的 MBPro 上;系统时间设置为 24 小时
因为它会更改到您的本地服务器 php 时间。
试试这个
<?php
$start_time = "06:30";
$end_time = "17:50";
$default_time = "00:00";
$LOD = date("H:i", (strtotime($default_time)+(strtotime($end_time) - strtotime($start_time))));
echo "Length of day: " . $LOD . " hours";
echo "<br>";
$diff = strtotime($end_time) - strtotime($start_time);
$hour = floor($diff / 3600);
$minute = ($diff % 3600) / 60;
echo "Length of day: " . $hour . ":" . $minute . " hours";
?>
以这种方式使用 date
没有任何意义。
如果你想要一个最低限度的感觉,那么你应该添加strtotime("00:00")
作为你的初始时间。
(end - start) + init
问题出在这里:
date_default_timezone_set('Asia/Singapore');
echo date('r', strtotime('06:00')); // Mon, 25 May 2015 06:00:00 +0800
date_default_timezone_set('America/Denver');
echo date('r', strtotime('06:00')); // Sun, 24 May 2015 06:00:00 -0600
注意到更改时区后日期如何偏移了一天?这是因为您提供给 strtotime()
的日期是相对日期,所以您需要 "ground" 它在一天的开始:
echo date('H:i', strtotime('17:00') - strtotime('06:00') + strtotime('00:00'));
或者,使用 DateTime:
$t1 = new DateTime('06:00');
$t2 = new DateTime('17:00');
echo $t2->diff($t1)->format('%H:%I');
在我看来,这应该回显 11 小时,但 returns 12;我错过了什么?
$start_time = "06:00";
$end_time = "17:00";
$LOD = date("H:i", ((strtotime($end_time) - strtotime($start_time))));
echo "Length of day: " . $LOD . " hours";
更新:运行 在 MAMP 环境中的我的 MBPro 上;系统时间设置为 24 小时
因为它会更改到您的本地服务器 php 时间。
试试这个
<?php
$start_time = "06:30";
$end_time = "17:50";
$default_time = "00:00";
$LOD = date("H:i", (strtotime($default_time)+(strtotime($end_time) - strtotime($start_time))));
echo "Length of day: " . $LOD . " hours";
echo "<br>";
$diff = strtotime($end_time) - strtotime($start_time);
$hour = floor($diff / 3600);
$minute = ($diff % 3600) / 60;
echo "Length of day: " . $hour . ":" . $minute . " hours";
?>
以这种方式使用 date
没有任何意义。
如果你想要一个最低限度的感觉,那么你应该添加strtotime("00:00")
作为你的初始时间。
(end - start) + init
问题出在这里:
date_default_timezone_set('Asia/Singapore');
echo date('r', strtotime('06:00')); // Mon, 25 May 2015 06:00:00 +0800
date_default_timezone_set('America/Denver');
echo date('r', strtotime('06:00')); // Sun, 24 May 2015 06:00:00 -0600
注意到更改时区后日期如何偏移了一天?这是因为您提供给 strtotime()
的日期是相对日期,所以您需要 "ground" 它在一天的开始:
echo date('H:i', strtotime('17:00') - strtotime('06:00') + strtotime('00:00'));
或者,使用 DateTime:
$t1 = new DateTime('06:00');
$t2 = new DateTime('17:00');
echo $t2->diff($t1)->format('%H:%I');