在我的代码中,我使用 DateTime
对象来操作日期,然后将它们转换为时间戳以便保存到一些 JSON 文件中。
由于某些原因,我想要拥有与 DateTime(或类似的东西)相同但精度为微秒的对象(当插入到 JSON 文件中时会将其转换为浮点数)。
我的问题是:是否有一个 PHP 对象类似于 DateTime
,但也可以处理 微秒?
目标是能够使用对象来操作微秒。
在date() 文档中,有一些指示 DateTime 可以创建带有微秒的内容,但我找不到如何创建。
u 微秒 (在PHP 5.2.2 中添加)。请注意,date() 总是生成000000,因为它需要一个整数参数,而DateTime::format()如果使用微秒创建DateTime,则支持微秒。
我尝试将 DateTime 对象的时间戳设置为浮点值 (microtime(true)
),但它不起作用 (我认为它会将时间戳转换为整数,从而导致微秒丢失)。
这是我尝试的方法:
$dt = new DateTime();
$dt->setTimestamp(3.4); // I replaced 3.4 by microtime(true), this is just to give an example
var_dump($dt);
var_dump($dt->format('u'));
正如您在此处所见,.4
不会被计入(即使我们可以使用微秒格式 u
)。
object(DateTime)[1]
public 'date' => string '1970-01-01 01:00:03' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Berlin' (length=13)
string '000000' (length=6)
编辑:我看到了这段代码,它允许在DateTime中添加微秒,但是在创建DateTime之前,我需要对微秒进行大量修改。由于我将经常使用它,所以我希望在获取“微秒对象”之前尽可能少地修改微秒。
$d = new DateTime("15-07-2014 18:30:00.111111");