Lorsque je lance cela, le premier est correctement créé dans une date. Le second échoue, renvoyant un boolean
et je ne peux donc pas formater. Le temps est-il hors de portée?
//works correctly
$startDate = "2015-05-06 10:49:20.637133";
$start = DateTime::createFromFormat('Y-m-d h:m:s.u',$startDate);
echo $start->format('m/d/y');
//doesn't work correctly
$startDate = "2015-05-12 15:49:06.821289";
$start = DateTime::createFromFormat('Y-m-d h:m:s.u',$startDate);
echo $start->format('m/d/y');
Changez le h
en un gros H
, car le petit est au format 12 heures et le grand au format 24 heures.
Vous pouvez voir tous les formats dans le manuel . Et une citation de là:
h Format 12 heures d'une heure avec des zéros de tête de 01 à 12
H Format 24 heures d'une heure avec des zéros en tête 00 à 23
Signifie en ce moment que votre code échoue, car il n'y a pas de 15 au format 12 heures.
Vérifiez DateTime::getLastErrors()
:
php > var_dump(DateTime::createFromFormat('Y-m-d h:m:s',"2015-05-12 15:49:06"));
bool(false)
php > var_dump(DateTime::getLastErrors());
array(4) {
["warning_count"]=>
int(1)
["warnings"]=>
array(1) {
[19]=>
string(27) "The parsed date was invalid"
}
["error_count"]=>
int(1)
["errors"]=>
array(1) {
[11]=>
string(30) "Hour can not be higher than 12"
En plus des autres réponses, pour les formats standard compris par DateTime
, vous n'avez pas besoin de créer à partir d'un format:
$startDate = "2015-05-12 15:49:06.821289";
$start = new DateTime($startDate);
echo $start->format('m/d/y');