我回显这个:
php> echo date("Y-m-dTH:i:s");
2011-05-27T11:21:23
如何使用日期功能获得此日期格式:
2011-01-12T14:41:35.7042252+01:00
(例如)
35.7042252=>秒。小数分数-秒
我试过:
php> function getTimestamp()
... {
... return date("Y-m-dTH:i:s") . substr((string)microtime(), 1, 8);
... }
php> echo getTimestamp();
2011-05-27T15:34:35.6688370 // missing +01:00 how can I do?
date('Y-m-dTH:i:s.uP')
PHP 5.2.2中增加了微秒u
。对于早期或(仍然)损坏的版本(见注释):
date('Y-m-dTH:i:s') . substr(microtime(), 1, 8) . date('P')
或者,为了避免两次调用date
:
date(sprintf('Y-m-dTH:i:s%sP', substr(microtime(), 1, 8)))
最佳性能:
substr_replace(date('c'), substr(microtime(), 1, 8), 19, 0);
通过进行单独的[日期]通话,您很有可能出现两个时间戳不正常的情况:例如,通话日期为1:29:22.999999,镜像时间为1:29:23.0000001。在我的服务器上,连续的电话大约相隔10个我们。
源
试试这个:
list($usec, $sec) = explode(" ", microtime());
echo date("Y-m-dTH:i:s", $sec) . substr($usec, 1, 8) . date("P", $sec);
例如:
2015-07-19T16:59:16.0113674-07:00
作为在PHP 5.2中添加的DateTime类的2020解决方案,您可以做一个简单的一行代码来获得所需的格式。
例如:
echo (new DateTime())->format('Y-m-dTH:i:s.uP');
// 2020-04-23T09:18:25.311075+02:00
由DateTime
类实现的DateTimeInterface为广泛使用的日期格式带来了自己的常量。如果你知道格式,你可以使用一个常数。
echo var_dump($datetime->format(DateTime::RFC3339_EXTENDED));
// 2020-04-23T09:18:25.311+02:00
由于面向对象编程在PHP世界中广泛传播,这也是一个可能的解决方案。
如果解析microtime
返回的字符串会让你吐在嘴里,并且你不想在输出中混合多个不同的时间戳,你可以这样做:
$unow = microtime(true);
sprintf("%s.%06d%s", date("Y-m-dTH:i:s", $unow), ($unow - floor($unow))*1e6, date("P", $unow));