php日期错误

php日期错误,php,datetime,Php,Datetime,这是我的职责: public static function GetFormattedMicroTime($timestamp = false) { if(!$timestamp) $timestamp = microtime(true); return DateTime::createFromFormat('U.u',sprintf('%.f', $timestamp))->format('Y-m-d\TH:i:s.u'); } 这就是我如何调用它(我只

这是我的职责:

public static function GetFormattedMicroTime($timestamp = false) {
    if(!$timestamp)
        $timestamp = microtime(true);
    return DateTime::createFromFormat('U.u',sprintf('%.f', $timestamp))->format('Y-m-d\TH:i:s.u');
}
这就是我如何调用它(我只从代码中的一个点调用它):

我得到了很多:

PHP消息:PHP致命错误:对非对象调用成员函数format()

有人能帮我排除故障吗

编辑:

我使用的是php fpm 5.4.28

我稍微改变了一下我的功能:

public static function GetFormattedMicroTime($timestamp = false) {
    if(!$timestamp)
        $timestamp = microtime(true);

    $d = DateTime::createFromFormat('U.u',sprintf('%.f', $timestamp));
    if ($d instanceof DateTime){
        return $d->format('Y-m-d\TH:i:s.u');
    } else {
        error_log("Erreur date ! timestamp = $timestamp erreur =".print_r(DateTime::getLastErrors(),true));
        return $timestamp;
    }
}
现在我进入nginx日志:

PHP message: Erreur date ! timestamp = 1403539343,372 erreur = Array
(
    [warning_count] => 0
    [warnings] => Array
        (
        )
    [error_count] => 2
    [errors] => Array
        (
            [10] => Unexpected data found.
        )
)

区域设置会影响sprintf的输出。显然,无论您从何处获得此错误,都有一个区域设置,它使用逗号而不是小数点来分隔整位数和小数位数。本质上,它正试图做到这一点:

DateTime::createFromFormat('U.u','1403538707,536290')
createFromFormat
只将其视为小数点字符,而不是区域设置的小数分隔符

试着改用


您的日期/时间无效您可能正在尝试使用
格式('Y-m-d\TH:i:s.u')
使用
\t
\\t
@Fred ii-我想要的是一个t,而不是一个选项卡,如DateTime::ISO8601@JohnConde我的datetime怎么可能无效?
datetime::createFromFormat('U.U','1403538707.536290'))
不适用于5.3.0及以下版本。我不知道为什么会这样。
DateTime::createFromFormat('U.u','1403538707,536290')
DateTime::createFromFormat('U.u', number_format($timestamp, 6, '.', ''));