【问题标题】:how to use epoch time in php by adding time offset value如何通过添加时间偏移值在php中使用纪元时间
【发布时间】: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 中做到这一点,那将是非常有帮助的。

【问题讨论】:

    标签: php datetime unix timestamp epoch


    【解决方案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
    猜你喜欢
    • 2016-04-29
    • 2012-11-14
    • 2011-03-23
    • 2023-03-27
    • 1970-01-01
    • 2016-03-23
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多