Question

J'ai une colonne datetime dans MySQL.

Comment puis-je le convertir à l'écran sous la forme mm / jj / aa H: M (AM / PM) en utilisant PHP?

Était-ce utile?

La solution 2

Pour convertir une date extraite de MySQL au format souhaité ( mm / jj / aa H: M (AM / PM) ):

// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM

Reportez-vous aux Options de formatage de date PHP pour ajuster le format.

Autres conseils

Si vous cherchez un moyen de normaliser une date au format MySQL, utilisez ce qui suit

$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );

La ligne $ phpdate = strtotime ($ mysqldate) accepte une chaîne et effectue une série d'heuristiques pour transformer cette chaîne en horodatage Unix.

La ligne $ mysqldate = date ('Ymd H: i: s', $ phpdate) utilise cet horodatage et le PHP date pour remettre cet horodatage au format de date standard de MySQL.

( Note au rédacteur : cette réponse est due à une question originale aux formulations confuses et à l'utilité générale de cette réponse fournie par Google, même si elle n'a pas répondu directement à la question qui existe maintenant)

Si vous utilisez PHP 5, vous pouvez également essayer

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
$valid_date = date( 'm/d/y g:i A', strtotime($date));

Référence: http://php.net/manual /en/function.date.php

Enfin la bonne solution pour PHP 5.3 et supérieur:

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');

Un moyen plus simple serait de formater la date directement dans la requête MySQL, au lieu de PHP. Voir la saisie manuelle de MySQL pour DATE_FORMAT .

Si vous préférez le faire en PHP, vous avez besoin de la fonction date , mais vous ' Vous devrez d’abord convertir la valeur de votre base de données en un horodatage.

Oubliez tout. Il suffit d'utiliser:

$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))

Pour formater correctement un objet DateTime en PHP afin de le stocker dans MySQL, utilisez le format normalisé utilisé par MySQL, à savoir ISO 8601 .

Ce format est stocké sous forme constante dans PHP depuis la version 5.1.1, et je vous recommande vivement de l'utiliser plutôt que de saisir manuellement la chaîne à chaque fois.

$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);

Ceci, ainsi qu'une liste d'autres constantes PHP DateTime, sont disponibles à l'adresse http://php.net/manual/fr/class.datetime.php#datetime.constants.types

Ceci devrait formater un champ dans une requête SQL:

SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename

Utilisez la fonction date :

<?php
    echo date("m/d/y g:i (A)", $DB_Date_Field);
?>

En fonction de votre configuration MySQL datetime. En règle générale: 2011-12-31 07:55:13 . Cette fonction très simple devrait faire la magie:

function datetime()
{
    return date( 'Y-m-d H:i:s', time());
}

echo datetime(); // display example: 2011-12-31 07:55:13

Ou un peu plus d'avance pour répondre à la question.

function datetime($date_string = false)
{
    if (!$date_string)
    {
        $date_string = time();
    }
    return date("Y-m-d H:i:s", strtotime($date_string));
}
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

Si vous ne voulez pas changer toutes les fonctions de votre code PHP, pour afficher le format de date attendu, changez-le à la source - votre base de données.

Il est important de nommer les lignes avec l'opérateur en tant que comme dans l'exemple ci-dessus (en tant que dateFrom, en tant que dateUntil). Les noms que vous écrivez ici sont les noms, les lignes seront appelées dans votre résultat.

La sortie de cet exemple sera

[Jour du mois, numérique (0..31)]. [Nom du mois (janvier .. décembre)]. [Année, numérique, quatre chiffres]

Exemple: 5.août.2015

Modifiez les points avec le séparateur souhaité et vérifiez la DATE_FORMAT (date, format) pour plus de formats de date.

Vous pouvez également demander à votre requête de renvoyer l'heure sous forme d'horodatage Unix. Cela éliminerait le besoin d'appeler strtotime () et rendrait les choses un peu moins intensives du côté de PHP ...

select  UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;

Ensuite, en PHP, utilisez simplement la fonction date () pour le formater à votre guise.

<?php
  echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>

ou

<?php
  echo date('F j, Y, g:i a', $row->unixtime);
?>

J'aime cette approche, par opposition à l'utilisation de dans le code DATE_FORMAT . code> function, car il vous permet de réutiliser la même requête pour récupérer les données et de modifier le formatage en PHP.

Il est agaçant d’avoir deux requêtes différentes uniquement pour modifier l’affichage de la date dans l’interface utilisateur.

Vous pouvez avoir des problèmes avec les dates non retournées dans l'horodatage Unix, donc cela fonctionne pour moi ...

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))

Cela fonctionnera ...

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', <*>POST['date'])))."'";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top