【问题标题】:Convert Epoch Time to Date PHP将纪元时间转换为日期 PHP
【发布时间】:2012-11-08 18:58:47
【问题描述】:

我现在正在使用一个 API,它提供了一个 epochTime。我已经尝试了一切将这个纪元时间转换为日期,但它似乎没有工作,包括$epoch_time / 1000,然后使用date() 函数来转换它。

纪元时间看起来像这样 1353430853299。有没有办法做到这一点? strtotime() 也不起作用。

似乎所有关于纪元时间的其他读物都是关于将日期更改为纪元时间,但我希望反过来。任何帮助是极大的赞赏。

【问题讨论】:

    标签: php time epoch


    【解决方案1】:

    使用 substr($epoch, 0, 10) 对其进行了修复,然后对任何想知道 13 位数纪元时间的人使用 date 函数。

    这是一个示例代码:

    echo date("Y-m-d H:i:s", substr("1477020641000", 0, 10));
    // Result: 2016-10-20 20:30:41
    

    【讨论】:

    • 大致,纪元数字长度在 09/2001 左右从 13 位减少到 12 位,然后在 1973 年 3 月再次变为负数并增加长度你去的更远的1970年。我会将其更改为 echo date("Y-m-d H:i:s", substr("1477020641000", 0, -3)); 以解决此问题。
    【解决方案2】:

    有几种不同的方法可以做到这一点。

    首先,您所拥有的是一个 Unix 纪元时间。 (1/1/1970),这让一切变得容易得多。

    在 PHP 中,试试

    $epoch = 1344988800;
    $dt = new DateTime("@$epoch");
    echo $dt->format('Y-m-d H:i:s');
    

    显示你的日期

    如果您想要较长的 RFC232 日期:

    echo date('r', $epoch);
    

    【讨论】:

    • 查看更新。这应该会有所帮助。
    • 关于“让一切变得更容易”:您应该意识到 UNIX 时间戳是一种很好且简单的时间处理方式,但不是坚如磐石的方式。例如。 POSIX 将一天定义为 86400 秒,当闰秒发生时这是不正确的。 UNIX 时间戳传播到两秒,然后 AFAIK :-)
    • 绝对!但是,我在一个人们创建自己的时代时代的环境中工作,并且并不总是记得把它们写下来......所以很高兴看到一个有一些社区基础的时代 :)
    • 从 PHP 5 开始,还有一种 ISO-8601 格式与 Joda TimeDateTimeFormatter 所期望的格式兼容。这在从 PHP 向 Java 后端发送 dateTime 时特别​​有用,Java 后端会自动将字符串反序列化为 Joda Time 的DateTime。只需使用'c':date('c', $epoch);
    【解决方案3】:
    $epoch = 1344988800;
    $dt = new DateTime("@$epoch"); // convert UNIX timestamp to PHP DateTime
    echo $dt->format('Y-m-d H:i:s'); // output = 2012-08-15 00:00:00 
    

    更多:http://www.epochconverter.com/programming/functions-php.php

    【讨论】:

    • 不知道为什么,但是它调用的时代时间是这样的:44858-07-07 12:50:35 当我打印时代值时,它看起来像这样 1353430817435 它看起来像纪元是 13 个字符?
    • 您所拥有的是一个 UNIX 时间戳加上三位毫秒,该值是当前时间与 1970 年 1 月 1 日 UTC 午夜之间的差异,以毫秒为单位。跳过最后三位数字并将其提供给 date()
    【解决方案4】:
    <?php
    $epoch = '1353429562';
    
    date_default_timezone_set('GMT');
    echo date('Y-m-d H:i:s', $epoch);
    

    【讨论】:

    • 日期('Y-m-d H:i', $epoch);小错误不是 m,而是 i 因为 m 代表月份。
    【解决方案5】:

    仅供参考,发送 JSON 数据的 API 使用以毫秒为单位的纪元以与 Web 浏览器兼容。

    我不知道为什么 PHP 需要删除毫秒,因为它是每个 Web 浏览器的标准。

    所以,你可以使用左边的 10,或者 /1000(如果你不想在 2286 年 11 月 20 日惹麻烦,最好除以 1000!!!)

    【讨论】:

      【解决方案6】:

      epoch格式

      只需要选择10位数字
      <?php echo date("Y-m-d H:i:s", substr("1621157545307", 0, 10)); ?>
      

      输出会是这样的:

      2021-05-16 15:02:25

      【讨论】:

        【解决方案7】:

        除以 1000 时有效:

        echo date("Y-m-d H:i:s", round(1353430853299/1000))
        

        在本例中,您将得到1353430853.299,因此您必须将其四舍五入以去除数字的小数部分。如果你不想让它四舍五入,你也可以使用 floor。

        【讨论】:

          猜你喜欢
          • 2019-06-19
          • 2018-04-24
          • 2011-12-06
          • 2012-09-06
          • 2019-01-15
          • 2016-09-15
          • 2021-12-31
          • 2015-01-23
          相关资源
          最近更新 更多