我想知道是否有办法以微秒为单位获取任何日期时间。
我期待microtime(),但它只是返回当前的日期。
任何人都知道这是否可能?
我的日期如下:Y-m-d H:i:s.u.
我在想(Y-1970)*31556926 + m*151200+d*86400+h*3600+m*60+s.u
但我不知道这是不是为什么我是编程的初学者,但我不能想办法分开每个:Y,m ......做数学。
非常感谢任何帮助/建议。
答案 0 :(得分:4)
您可以使用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
答案 1 :(得分:1)
我要做的就是将输入格式拆分为:
Y-m-d H:i:s
和u
您应该可以通过在输入格式化的日期字符串中展开.
来实现此目的。然后只计算整个第二部分的UNIX时间戳。最后,只需将第二部分添加回时间戳(通过算术的字符串连接,具体取决于您是否需要字符串或浮点数)。
答案 2 :(得分:0)
不,这是不可能的。时间戳是内部的整数,描述从格林威治标准时间01.01.1970开始的秒数。无论你使用的是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';