In my code, I'm using DateTime
objects to manipulate dates, then convert them to timestamp in order to save them in some JSON files.
For some reasons, I want to have the same thing as DateTime (or something close), but with microseconds precision (that I would convert to float when inserting inside the JSON files).
My question is : is there a PHP object that is like DateTime
, but can handle microseconds too ?
The goal is to be able to manipulate microtimes with objects.
In the date() documentation, there is something that indicates that DateTime can be created with microseconds, but I wasn't able to find how.
u Microseconds (added in PHP 5.2.2). Note that date() will always
generate 000000 since it takes an integer parameter, whereas
DateTime::format() does support microseconds if DateTime was created
with microseconds.
I have tried to set the timestamp of a DateTime object with a floating value (microtime(true)
), but it doesn't work (I think it converts the timestamp to an int, causing the loss of the microseconds).
Here is how i tried
$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'));
The .4
is not taken into account as you can see here (even though we can use the u
format, which corresponds to the microseconds).
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)
EDIT : I saw this code, which allows to add microseconds to a DateTime, but I would need to apply a lot of modifications to the microtime before creating the DateTime. Since I will use this a lot, I want to do as little modifications to the microtime as possible before getting the "microtime object".
$d = new DateTime("15-07-2014 18:30:00.111111");
See Question&Answers more detail:
os