J'ai essayé
$dtToday = DateTime::createFromFormat('Y-m-d', date('Y-m-d'));
mais quand je le sors
die($dtToday->format('d M Y g:i:s a'));
J'ai toujours l'heure, par exemple "22 janvier 2011 16h53:59". Pourquoi donc?
METTRE À JOUR
Ah ... beaucoup de gens m'ont mal compris, mon mal, j'ai oublié de souligner le point principal. J'ai créé la date avec seulement la portion de date, je ne veux pas l'heure. Donc, je m'attendrais à quelque chose comme
22 Jan 2011 12:00:00 am
Vous pouvez appeler ->setTime(0, 0)
pour mettre à zéro la partie temps:
$date = DateTime::createFromFormat('Y-m-d', '2011-01-22')->setTime(0, 0);
echo $date->format('d M Y g:i:s a');
// 22 Jan 2011 12:00:00 am
Voir la documentation de DateTime::createFromFormat
:
Si format ne contient pas le caractère! alors, les parties de l'heure générée qui ne sont pas spécifiées dans format seront définies sur l'heure système actuelle.
Si vous effectuez l'appel de fonction suivant, vous obtiendrez le résultat attendu:
$dtToday = DateTime::createFromFormat('!Y-m-d', date('Y-m-d'));
Vous pouvez le faire en passant le timestamp Unix actuel comme second paramètre à la fonction de date
echo date("Y-m-d H:i:s",time());
Horodatage de début d'aujourd'hui
$today_start_ts = strtotime(date('Y-m-d', time()). '00:00:00');
Vous obtenez "22 janvier 2011 16:53:59" parce que ce sont les règles à suivre pour formater votre date avec:
d (jour): 22
M (Mois): Jan
Y (Année): 2011
g (format 12 heures): 4
i (minutes): 53
s (secondes): 59
a (am/pm): pm
Soyez plus précis sur le format que vous souhaitez que votre horodatage ait. Je suggère que vous preniez un pic à la date php }.
Est-ce qu'il utilise UTC ou quelque chose comme ça?
J'ai une version PHP qui me donne une erreur chaque fois que je fais quelque chose lié à date
sans d'abord utiliser date_default_timezone_set
. Peut-être que ça vous aidera.
Supprimez cette partie g:i:s a
de votre code.
Maintenant, si vous voulez une date Nice formatée en fonction de votre région, je vous recommande d’utiliser la fonction strftime()
.