【问题标题】:PHP add miliseconds as microtime to datePHP将毫秒添加为迄今为止的微时间
【发布时间】:2021-10-28 06:23:53
【问题描述】:

这是我的代码:

$d2 = new DateTime("2019-01-01 02:24:19.769002");
echo $d2->format("Y-m-d H:i:s.u");

$tBefore = microtime(true);

// GET ANOTHER DATA

$tAfter = microtime(true);

$d2->modify('+'.($tAfter-$tBefore).' microsecond');
echo $d2->format("Y-m-d H:i:s.u");

但是我的代码在毫秒内返回错误的日期。

我想在第一次约会时添加秒和毫秒,并获得 ANOTHER DATA 的时间。

其实如果ANOTHER DATA0.100毫秒,我的结果应该是2019-01-01 02:24:19.869002

【问题讨论】:

    标签: php date datetime time


    【解决方案1】:

    您可以使用DateTimeDateInterval

    <?php
    
    $d2 = new DateTime('2019-01-01 02:24:19.769002');
    
    $tBefore = new DateTime();
    // `sleep` to simulate work done between `$tBefore` and `$tAfter`
    sleep(1);
    $tAfter = new DateTime();
    
    $d2->add($tBefore->diff($tAfter));
    
    print_r($d2);
    

    https://www.php.net/manual/en/class.dateinterval.php

    https://www.php.net/manual/en/datetime.add

    https://www.php.net/manual/en/datetime.diff

    【讨论】:

    • 谢谢。但我不想使用睡眠。
    • @Mohammad 你不需要。 sleep 是模拟代码中两次之间完成的工作。
    • 当然可以。这是我的错。谢谢
    【解决方案2】:

    从 PHP 7.1 开始,也可以使用 modify 方法轻松地将微秒添加到 DateTime。微秒值必须是整数,不能是浮点数。 microtime (true) 也以浮点数而不是微秒的形式提供秒数。

    $date = new DateTime("2019-01-01 02:24:19.769002");
    $seconds = 0.100;
    
    $intMicroseconds = intval($seconds * 1000000);
    $date->modify($intMicroseconds.' microseconds');
    
    echo $date->format("Y-m-d H:i:s.u");
    //2019-01-01 02:24:19.869002
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 2014-11-16
      • 2020-07-02
      • 2018-08-01
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多