3

我想知道是否有办法以微秒为单位获取任何日期时间。

我期待着 microtime(),但它只是返回当前的日期。

任何人都知道这是否可能?

我的日期如下:Y-m-d H:i:s.u.

我在想类似的东西(Y-1970)*31556926 + m*151200+d*86400+h*3600+m*60+s.u

但我不知道这是否是我成为编程初学者的原因,但我无法想办法将每个人分开:Y,m ... 做数学。

将不胜感激任何帮助/建议。

4

3 回答 3

5

你可以这样做DateTime

$date = DateTime::createFromFormat('Y-m-d H:i:s.u', '2000-01-01 13:12:12.129817');
echo $date->format('U.u');
//prints: 946728732.129817
于 2013-10-07T21:26:18.550 回答
1

我要做的只是像这样拆分您的输入格式:

Y-m-d H:i:su

您应该能够通过.在您的输入格式化日期字符串中爆炸来做到这一点。然后只计算整个第二部分的 UNIX 时间戳。最后,只需将您的分数第二部分添加回时间戳(通过算术的字符串连接,具体取决于您想要字符串还是浮点数)。

于 2013-10-07T21:27:50.447 回答
0

不,这是不可能的。时间戳在内部是整数,描述从 01.01.1970 GMT 开始的秒数。无论您使用的是 32 位还是 64 位系统,从 1970 年开始的微秒都会导致溢出,因为它们中的太多已经消失了。


您更新了问题.. 是的,可以使用以下命令在微发送中显示当前时间microtime()

$microtime = microtime();
// will return something like:
// 0.40823900 1381181037
// where the first are the micros and the last a regular time stamp
list($micros, $timestamp) = explode(' ', $microtime);

echo date('Y-m-d H:i:s', intval($timestamp)) . '+' 
  . (floatval($micros) * 1000000) . 'msec';
于 2013-10-07T21:16:32.333 回答