如何通过添加时间偏移值在php中使用纪元时间

时间:2018-10-02 11:30:54

标签: php datetime unix timestamp epoch

我有一个十六进制2a ba ce 21,我将其转换为十进制716885537,现在我要执行的操作是:
2a ba ce 21被给出;现在以秒为单位打印上次更新时间(自2000年1月1日午夜以来经过的秒数)-4字节
要转换为标准时间,请添加时间偏移值946684800(1970年1月至2000年1月的时间偏移)

我搜索了很多东西,说实话,每件事都很复杂...如果有人告诉我如何用PHP做到这一点,那将是很大的帮助。

1 个答案:

答案 0 :(得分:1)

  

万事万物...

试图分解事物...
大概您的十六进制字节是低位字节序,因此在转换之前必须先反转。

<?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";