【发布时间】:2025-12-09 20:50:02
【问题描述】:
这是我的功能:
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');
}
我就是这样称呼它的(我只在我的代码中的一个地方调用它):
$microtime = microtime(true);
$sinceLastLog = number_format($microtime - self::$lastLogTime,4);
self::$lastLogTime = $microtime;
return Utils::GetFormattedMicroTime($microtime) .'|'. $sinceLastLog .'| blah blah';
我得到了很多:
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.
)
)
【问题讨论】:
-
您的日期/时间无效
-
您可能正在尝试使用
format('Y-m-d\TH:i:s.u')使用\t或\\t设置标签 -
@Fred-ii- 我想要一个 T,而不是一个选项卡,就像在 DateTime::ISO8601 中一样
-
@JohnConde 我的日期时间怎么会无效?
-
DateTime::createFromFormat('U.u','1403538707.536290')不适用于 5.3.0 及以下版本。但是我不知道为什么会这样。