Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过添加时间偏移值在php中使用历元时间_Php_Datetime_Unix_Timestamp_Epoch - Fatal编程技术网

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

如何通过添加时间偏移值在php中使用历元时间,php,datetime,unix,timestamp,epoch,Php,Datetime,Unix,Timestamp,Epoch,我有一个十六进制的2a ba ce 21,我已经把它转换成十进制的716885537,现在我要做的是: 给出了2a-ba-ce-21;现在以秒为单位打印上次更新的时间(自2000年1月1日午夜以来经过的秒)-4字节 要转换为标准历元时间,请添加时间偏移值946684800(从1970年1月到2000年1月的时间偏移) 我找了很多,老实说,所有的东西都混在一起了。。。如果有人告诉我如何在PHP中实现这一点,那将非常有帮助 一切都变得复杂了 试图将这些东西混合起来… 大概您的十六进制字节是以小的尾端

我有一个十六进制的
2a ba ce 21
,我已经把它转换成十进制的
716885537
,现在我要做的是:
给出了
2a-ba-ce-21
;现在以秒为单位打印上次更新的时间(自2000年1月1日午夜以来经过的秒)-4字节
要转换为标准历元时间,请添加时间偏移值946684800(从1970年1月到2000年1月的时间偏移)

我找了很多,老实说,所有的东西都混在一起了。。。如果有人告诉我如何在PHP中实现这一点,那将非常有帮助

一切都变得复杂了

试图将这些东西混合起来…
大概您的十六进制字节是以小的尾端顺序排列的,所以您必须在转换之前反转

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

非常感谢,还有一件事,如果我必须将2C00转换为以毫秒为单位的上次更新时间,也就是2字节的时间,该怎么办?@Muhammad Bilal-我扩展了答案。非常感谢……这就是我要找的XD
$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";