datetime — как использовать время эпохи в php, добавляя значение смещения времени

У меня есть этот гекс 2a ba ce 21 который я перевел в десятичную 716885537Теперь я попросил сделать следующее:
2a ba ce 21 дано; теперь выводит последнее обновленное время в секундах (секунды, прошедшие с 1 января 2000 г.) — 4 байта
Для преобразования в стандартное время эпохи добавьте значение временного смещения 946684800 (временное смещение с января 1970 года по январь 2000 года)

Я много искал и, честно говоря, все перемешалось … Было бы здорово, если кто-нибудь подскажет мне, как это сделать в PHP.

0

Решение

все смешалось …

Попытка размешать вещи …
Предположительно, ваши шестнадцатеричные байты расположены в порядке с прямым порядком байтов, поэтому перед конвертацией вам нужно повернуть вспять

<?php
$timestamp = hexdec(implode(array_reverse(explode(' ', '2a ba ce 21'))));
echo "seconds:  ", $timestamp+946684800, "\n";
echo "readable: ", date('r', $timestamp+946684800), "\n";

что если бы мне пришлось преобразовать 2c 00 в последнее обновленное время в миллисекундах, то есть в 2 байта.

Преобразование происходит так же, как указано выше. Если вы хотите присоединить миллисекунды к отметке времени, добавьте к ней деление на 1000.

$timestamp = hexdec(implode(array_reverse(explode(' ', '2a ba ce 21'))));
$millisecs = hexdec(implode(array_reverse(explode(' ', '2c 00'))));
$timestamp += 946684800 + $millisecs/1000;
echo "seconds:  ", $timestamp, "\n";
date_default_timezone_set('UTC');
echo "readable: ", date('Y-m-d H:i:s.', $timestamp).substr("00$millisecs", -3), "\n";
1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector