如何通过添加时间偏移值在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 和本地时间之间的偏移量

C:如何在特定时区(按偏移量)打印特定的“时间”值?

如何修复php非法偏移错误[重复]

Python 中给定 TimeZone 的标准 UTC 偏移量(无 DST)

.NET 通过时区名称获取时区偏移量