Question

Quel est le moyen le plus simple et le plus rapide de compléter le code PHP ci-dessous de sorte que la sortie soit dans un format convivial (par exemple, "27 octobre 2006")?

$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = ???($row['my_timestamp']);
echo $formatted_date;
Était-ce utile?

La solution

Vous pouvez utiliser MySQL pour le faire à votre place,

$result = mysql_query("SELECT DATE_FORMAT(my_timestamp, '%M %d, %Y) AS my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = $row['my_timestamp'];
echo $formatted_date;

Ou utilisez PHP,

$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = strftime('%B %d, %y', $row['my_timestamp']);
echo $formatted_date;

Autres conseils

J'ai tendance à faire le formatage de la date en SQL, comme Aron 's réponse . Bien que, pour les dates PHP, je préfère utiliser l’objet DateTime ( PHP5 +) sur la date :

$timestamp = new DateTime($row['my_timestamp']);
echo $timestamp->format('F j, Y') . '<br />';
echo $timestamp->format('F j, Y g:ia');

Vous souhaitez utiliser la fonction date () .

Si vous avez une colonne DATE ou DATETIME, vous pouvez utiliser SELECT UNIX_TIMESTAMP (mycolumn) AS mycolumn pour le convertir en un horodatage Unix que la fonction de date utilisera.

Vous devez absolument utiliser la classe DateTime (ou toute classe équivalente à la maison), sur la fonction Date, et ne pas utiliser les horodatages:

  • L'horodatage ne fonctionne pas bien dans tous les environnements pour les dates antérieures à 1970. Si vous traitez avec des anniversaires, vous vous fiez au code qui risque de tomber en panne sur certains serveurs
  • Faites également très attention à l'utilisation de strftime, cela ressemble à une fonction intéressante, mais elle est très difficile à comprendre, car elle dépend de setlocale, qui concerne l'ensemble du processus. Cela signifie que si votre serveur est une boîte Windows, vous avez un processus par processeur, puis le reste est multi-threadé - en d'autres termes, un setlocale dans un script affectera les autres scripts du même processeur - très méchant. !

À la fin de la journée, ne vous fiez pas aux horodatages, sauf si vous êtes dans un environnement uniquement anglais, et ne traitez que des dates comprises entre 1970 et 2032 ...!

Si vos tables sont indexées sur ce champ de date et que vous utilisez une fonction de format de données mysql dans votre appel .. (c'est-à-dire .. SELECT DATE_FORMAT (mon_horodatage, '% M% d,% Y) votre indexation. Quelque chose à garder à l'esprit. Nous avons assisté à une augmentation spectaculaire de la vitesse avec la suppression de tout fonctionnement de nos instructions SQL et la possibilité pour php de tout gérer. Fonctionnement tel que les dates de formatage et les mathématiques simples

j'utilise:

date ("F j, Y", strtotime ($ row ['mon_horodatage'])))

ou vous pouvez modifier le paramètre SELECT en: DATE_FORMAT (champ, '% d% M,% Y') en tant que date / heure

Vous avez le choix. Vous pouvez utiliser la fonction date () en PHP et traiter la sortie de MySQL. Vous pouvez également utiliser la fonction date_format () fonctionne dans MySQL et renvoie une chaîne formatée pour commencer.

D'après mon expérience, peu importe ce que vous utilisez, mais SOYEZ CONSISTANT. Ils ont des paramètres de formatage différents. Par conséquent, si vous utilisez les deux dans une application donnée, vous passerez beaucoup de temps à essayer de vous rappeler si «W» vous donne le nom du jour de la semaine ou de la semaine de l'année.

Demandez à la base de données d’effectuer le formatage à votre place. Il est beaucoup moins sujet aux erreurs parce que vous ne lisez pas une chaîne et ne la convertissez pas. Au lieu de cela, la base de données passe de son format natif à une chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top