Добрый день! Помогите разобраться в основах Unix - времени, не дающем мне покоя.
Нашел на просторах интернетов следующий код, позволяющий сложить два времени:
$time = "12:30";
$time2 = "07:30";
$secs = strtotime($time2) - strtotime("00:00:00"); // это просто время
$base = strtotime($time); // это дата (сегодня) + время
echo date("H:i:s", $base + $secs) . "\n"; // "20:00:00", дату мы просто не выводим
Вначале мы получаем время со стандартной датой:
Значения первых двух функций, входящих в переменные в формате date() следующие.
07:30:10 Wednesday 12th of February 2020
07:30:10 AM int(1581489010)
00:00:00 Wednesday 12th of February 2020
12:00:00 AM int(1581462000)
Но если мы удаляем одну от другой:
$secs = strtotime($time2) - strtotime("00:00:00");
То получаем следующее число:
$secs (07:30:10 - 00:00:00) Thursday 1st of January 1970
08:30:10 AM int(27010)
Т.е. получается что число на час больше.
Дальше, я попробовал вывести с помощью функции date() число с int(1) и получилось следующее:
int(1) Thursday 1st of January 1970
01:00:01 AM int(1)
Отсюда стало понятно, как в той переменной значение увеличивается на час.
И это несмотря на то, что написано даже в википедии, что отсчет Unix-формата начинается с 00:00 1 января 1970.
Но не совсем понятно, норма ли это, когда написано везде, что отсчет начинается с нулей ( в моем случае, соответственно int(2) будет являться 01:00:02).
Ок. А теперь, каким-то образом, прибавляя два числа, мы получаем абсолютно нормальную дату и время, хотя казалось бы, она должна быть на час больше???
echo date("H:i:s", $base + $secs) . "\n"; // "20:00:00",
Помогите разобраться с этими тонкостями времени, пожалуйста. Может это я туплю и в упор не замечаю очевидного (вероятно, так и есть).