DateTime avec microsecondes

Dans mon code, je suis en utilisant DateTime objets à manipuler des dates, puis de les convertir à d'horodatage afin de les enregistrer dans certains des fichiers JSON.

Pour certaines raisons, je veux avoir la même chose que DateTime (ou quelque chose de proche), mais avec quelques microsecondes de précision (que je voudrais convertir flotter lors de l'insertion à l'intérieur de la fichiers JSON).

Ma question est : est-il un PHP objet c'est comme DateTimemais peut gérer microsecondes trop ?

L'objectif est d'être capable de manipuler microtimes avec les objets.

Dans le date() de la documentation, il y a quelque chose qui indique que DateTime peut être créé avec les microsecondes, mais je n'ai pas pu trouver comment.

u Microsecondes (ajouté en PHP 5.2.2). Notez que date() sera toujours
générer 000000 car elle prend un paramètre de type entier, tandis que
DateTime::format() prend en charge microsecondes si DateTime a été créé
avec microsecondes.

J'ai essayé de mettre le timestamp d'un objet DateTime avec une valeur flottante (microtime(true)), mais ça ne fonctionne pas (je pense qu'il convertit le timestamp int, causant la perte de quelques microsecondes).

Voici comment j'ai essayé

$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'));

La .4 n'est pas pris en compte comme vous pouvez le voir ici (même si on peut utiliser le u format, ce qui correspond à la microseconde).

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 : j'ai vu ce code, qui permet d'ajouter de microsecondes à un DateTime, mais j'aurais besoin d'appliquer beaucoup de modifications à la microtime avant la création de l'DateTime. Comme je vais l'utiliser beaucoup, je veux faire de petites modifications pour le microtime que possible avant d'obtenir le "microtime objet".

$d = new DateTime("15-07-2014 18:30:00.111111");

source d'informationauteur Heru-Luin | 2015-11-13