如何通过添加时间偏移值在php中使用纪元时间
Posted
技术标签:
【中文标题】如何通过添加时间偏移值在php中使用纪元时间【英文标题】:how to use epoch time in php by adding time offset value 【发布时间】:2019-03-07 12:45:09 【问题描述】:我有这个十六进制 2a ba ce 21
已转换为十进制 716885537
,现在我要求做的是:2a ba ce 21
已给出;现在以秒为单位打印上次更新时间(自 2000 年 1 月 1 日午夜以来经过的秒数)- 4 字节要转换为标准纪元时间,请添加时间偏移值 946684800(从 1970 年 1 月到 1 月的时间偏移) 2000)
我已经搜索了很多,老实说,每件事都混杂在一起......如果有人告诉我如何在 php 中做到这一点,那将是非常有帮助的。
【问题讨论】:
【参考方案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";
【讨论】:
非常感谢,还有一件事,如果我必须将 2c 00 转换为以毫秒为单位的最后更新时间,也就是 2 字节。 @Muhammad Bilal - 我扩展了答案。 非常感谢...这就是我要找的 XD以上是关于如何通过添加时间偏移值在php中使用纪元时间的主要内容,如果未能解决你的问题,请参考以下文章
将日期、时间和 UTC 偏移值转换为自 unix 纪元以来的毫秒数?
Perl:从考虑夏令时的纪元开始以秒为单位输入时间时,获取 gmtime 和本地时间之间的偏移量