Разница между двумя временными метками в переполнении стека

Мне кажется, что это должно повториться 11 часов, но возвращается 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";

Обновление: работает на моем MBPro в среде MAMP; системное время установлено на 24 часа.

2

Решение

С помощью date этот путь не имеет никакого смысла.

Если вы хотите минимальный смысл, то вы должны добавить strtotime("00:00") как ваше начальное время.

(end - start) + init

0

Другие решения

Проблема заключается здесь:

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() являются относительными датами, поэтому вам нужно «заземлить» их относительно начала дня:

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');
3

Потому что это изменится на время вашего 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";
?>
1
По вопросам рекламы [email protected]