我想知道是否有办法以微秒为单位获取任何日期时间。
我期待着 microtime(),但它只是返回当前的日期。
任何人都知道这是否可能?
我的日期如下:Y-m-d H:i:s.u.
我在想类似的东西(Y-1970)*31556926 + m*151200+d*86400+h*3600+m*60+s.u
但我不知道这是否是我成为编程初学者的原因,但我无法想办法将每个人分开:Y,m ... 做数学。
将不胜感激任何帮助/建议。
你可以这样做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
我要做的只是像这样拆分您的输入格式:
Y-m-d H:i:s
和u
您应该能够通过.
在您的输入格式化日期字符串中爆炸来做到这一点。然后只计算整个第二部分的 UNIX 时间戳。最后,只需将您的分数第二部分添加回时间戳(通过算术的字符串连接,具体取决于您想要字符串还是浮点数)。
不,这是不可能的。时间戳在内部是整数,描述从 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';