2009-08-28 6 views
11

J'essaye de convertir un mysql DATETIME dans ce format m/d/y mais le code ci-dessous ne fonctionne pas, renvoie le 31/12/1969 à la place quelqu'un peut-il me montrer comment faire ceci?Comment convertir un datetime mysql en PHP au format m/d/y?

$fromMYSQL = '2007-10-17 21:46:59'; //this is the result from mysql DATETIME field 
echo date("m/d/Y", $fromMYSQL); 

Répondre

41

Je pense que ce que vous voulez vraiment est la suivante:

$fromMYSQL = '2007-10-17 21:46:59'; 
echo date("m/d/Y", strtotime($fromMYSQL)); 

Le deuxième argument de la date est un horodatage et je pense que ce qui se passe est PHP voit votre chaîne comme -1 timestamp ... donc 12/31/1969.

Donc, pour obtenir un horodatage de la version de chaîne de la date, vous utilisez strtotime

+1

Changer la chaîne de format à "m/d/Y" et je vais upvote. Il veut une année à 4 chiffres. – MitMaro

+0

merci! Ça a marché! avec php7 –

+0

Génial. Travaux. Facile à mettre en œuvre – MarcoZen

1

Deux questions:

1) Vous avez besoin d'un capital Y

2) Vous avez besoin d'un type de date correcte.

Essayez

$fromMYSQL = date_create ('2007-10-17 21:46:59');  
echo date("m/d/Y", $fromMYSQL); 

Oops, strtotime est la conversion droit à un horodatage. date_create renvoie un objet DateTime.

2

Vous avez besoin d'un Y capital dans la chaîne de format de date. la minuscule y donne une année à deux chiffres et la lettre majuscule «Y» donne une année à quatre chiffres.

$fromMYSQL = '2007-10-17 21:46:59'; 
echo date("m/d/Y", strtotime($fromMYSQL)); 

PHP Manual Page For date peut être utile.

+1

vous avez raison pour obtenir un cependant année à 4 chiffres cela n'aide pas avec mon problème de ne pas montrer la bonne date, montre 12/31/1969 – JasonDavis

+0

Réponse mise à jour. 'strtotime' devrait analyser l'heure depuis MySql. – MitMaro

7

SQL:

SELECT whatever, UNIX_TIMESTAMP(date) date FROM table WHERE whatever 

PHP:

date('m/d/Y', $result['date']); 
2

Je couvert dans ma réponse à h ttp://stackoverflow.com/questions/499014/i-need-to-change-the-date-format-using-php/499021#499021 - En principe, date() attend un horodatage Unix à partir duquel il calcule la date/heure et les formats. Vous passez une chaîne qui provient du résultat de la requête MySQL, qui est probablement altérée par la frappe de Duck de PHP dans quelque chose qui ressemble à un horodatage Unix, mais n'a aucun sens.

J'explique quelques méthodes de traitement des colonnes de date dans ma réponse.

3

La meilleure façon est de convertir le dateformat directement dans votre Querystring:

$TimeFormat = "%m/%d/%Y"; // your pref. Format 

$sql = "SELECT DATE_FORMAT(DateCol , '" . $TimeFormat . "') as ConvertDate FROM tblTest"; 

Sinon, vous pouvez modifier cette fonction à vos besoins:

function format_date($original, $format) { 
    if (empty($original)) { 
     $original = date("Y-m-d H:i:s"); 
    } 
    $original = ereg_replace("30 Dez 1899", "30-01-1973", $original); 
    $format = ($format=='date' ? "%m-%d-%Y" : $format); 
    $format = ($format=='germandate' ? "%d.%m.%y" : $format); 
    $format = ($format=='germandaydate' ? "%A, %d.%m.%Y" : $format); 
    $format = ($format=='germantime' ? "%H:%M" : $format); 
    $format = ($format=='germandatetime' ? "%d.%m.%y %H:%M:%S" : $format); 
    $format = ($format=='datetime' ? "%m-%d-%Y %H:%M:%S" : $format); 
    $format = ($format=='mysql-date' ? "%Y-%m-%d" : $format); 
    $format = ($format=='mysql-datetime' ? "%Y-%m-%d %H:%M:%S" : $format); 
    $format = ($format=='mssql-date' ? "%Y%m%d" : $format); 
    $format = ($format=='mssql-datetime' ? "%Y%m%d %H:%M:%S" : $format); 
    $format = ($format=='Ymd' ? "%Y-%m-%d" : $format); 
    return !empty($original) ? strftime($format, strtotime($original)) : ""; 
} 
Questions connexes