Cela a fonctionné pour moi et il s'agit d'une simple ligne de trois :
function udate($format='Y-m-d H:i:s.', $microtime=NULL) {
if(NULL === $microtime) $microtime = microtime();
list($microseconds,$unix_time) = explode(' ', $microtime);
return date($format,$unix_time) . array_pop(explode('.',$microseconds));
}
Par défaut (aucun paramètre n'est fourni), cette fonction renvoie une chaîne de caractères dans ce format pour la microseconde à laquelle elle a été appelée :
AAAA-MM-JJ HH:MM:SS.UUUUUUUU
Une solution encore plus simple et plus rapide (bien qu'avec une précision réduite de moitié) serait la suivante :
function udate($format='Y-m-d H:i:s.', $microtime=NULL) {
if(NULL === $microtime) $microtime = microtime(true);
list($unix_time,$microseconds) = explode('.', $microtime);
return date($format,$unix_time) . $microseconds;
}
Celui-ci s'imprimerait dans le format suivant :
AAAA-MM-JJ HH:MM:SS.UUUU
0 votes
Ne date pas("A-m-d \TH :i:s.u") ont-ils moins de frais généraux ?
20 votes
Vous avez peut-être trop de chance ;)
1 votes
@Unkwntech : date() ne supporte que les entiers. Le manuel vous renvoie à date_format/DateTime::format pour l'utilisation de 'u'.
1 votes
@Jonathan Lonowski : oui, j'utilise DateTime::format
1 votes
De us.php.net/date : Note : Comme cette fonction n'accepte que des horodatages entiers, le caractère de format u n'est utile que lors de l'utilisation de la fonction date_format() avec des horodatages créés par l'utilisateur avec date_create(). Est-ce que cela signifie que je dois le construire manuellement avec microtime() ?
11 votes
C'est ridicule. Je suis venu ici avec le même problème que l'OP. Quel gâchis.
7 votes
Ridicule en effet... 2014 maintenant.
0 votes
Nous pouvons supposer qu'il en sera de même pour 2015
0 votes
Il semblerait que l'utilisateur652649 ait raison...
0 votes
La même chose se produira en 2016
0 votes
Notez que PHP 7 (je n'ai essayé que sur PHP 7.1) ajoute les microsecondes par défaut, donc il n'y a plus de problème.