PHP DateTime microseconds always returns 0

前端 未结 18 2410
萌比男神i
萌比男神i 2020-12-01 02:55

this code always returns 0 in PHP 5.2.5 for microseconds:

format(\"Y-m-d\\TH:i:s.u\") . \"\\n\";
?>

18条回答
  •  时光取名叫无心
    2020-12-01 03:05

    This should be the most flexible and precise:

    function udate($format, $timestamp=null) {
        if (!isset($timestamp)) $timestamp = microtime();
        // microtime(true)
        if (count($t = explode(" ", $timestamp)) == 1) {
            list($timestamp, $usec) = explode(".", $timestamp);
            $usec = "." . $usec;
        }
        // microtime (much more precise)
        else {
            $usec = $t[0];
            $timestamp = $t[1];
        }
        // 7 decimal places for "u" is maximum
        $date = new DateTime(date('Y-m-d H:i:s' . substr(sprintf('%.7f', $usec), 1), $timestamp));
        return $date->format($format);
    }
    echo udate("Y-m-d\TH:i:s.u") . "\n";
    echo udate("Y-m-d\TH:i:s.u", microtime(true)) . "\n";
    echo udate("Y-m-d\TH:i:s.u", microtime()) . "\n";
    /* returns:
    2015-02-14T14:10:30.472647
    2015-02-14T14:10:30.472700
    2015-02-14T14:10:30.472749
    */
    

提交回复
热议问题