2009-08-28 11 views

Antwort

41

Ich denke, was Sie wirklich wollen, ist dies:

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

Das zweite Argument von Datum ein Zeitstempel ist, und ich denke, was passiert ist PHP Ihren String als -1 Zeitstempel sieht ... also 12/31/1969.

Also, einen Zeitstempel aus der String-Version des Datums zu erhalten, verwenden Sie strtotime

+1

Ändern Sie die Formatzeichenfolge in "m/d/Y" und ich werde upvote. Er will 4 stelliges Jahr. – MitMaro

+0

danke! Es funktionierte! mit php7 –

+0

Großartig. Funktioniert. Einfach zu implementieren. – MarcoZen

1

Zwei Fragen:

1) Sie brauchen eine Hauptstadt Y

2) Sie müssen eine Art richtige Datum.

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

Oops Versuchen ist strtotime die richtige Umwandlung in einen Zeitstempel. date_create gibt ein DateTime-Objekt zurück.

2

Sie benötigen ein Kapital Y int die Datumsformat-Zeichenfolge. der Kleinbuchstabe y gibt ein zweistelliges Jahr und das Großbuchstabe 'Y' ein vierstelliges Jahr.

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

PHP Manual Page For date kann von einiger Hilfe sein.

+1

Sie richtig sind jedoch ein 4-stelliges Jahr für immer das hilft nicht mit meinem Problem, das korrekte Datum nicht zu zeigen, Shows 12/31/1969 – JasonDavis

+0

Antwort aktualisiert. 'strtotime' sollte die Zeit von MySql analysieren. – MitMaro

7

SQL:

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

PHP:

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

Ich deckte dies in meiner Antwort auf h ttp://stackoverflow.com/questions/499014/i-need-to-change-the-date-format-using-php/499021#499021 - im Grunde date() erwartet einen Unix-Zeitstempel, von dem es das Datum/Uhrzeit berechnet und formatiert. Sie geben einen String ein, der aus dem MySQL-Abfrageergebnis stammt, das wahrscheinlich durch die Eingabe von PHP in eine Form, die wie ein Unix-Zeitstempel aussieht, gestört wird, aber keinen Sinn ergibt.

Ich erkläre ein paar Ansätze zum Umgang mit Datumsspalten in meiner Antwort.

3

Der beste Weg ist es, das Datumsformat direkt in Ihre Abfragezeichen zu konvertieren:

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

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

Ansonsten können Sie diese Funktion auf Ihre Bedürfnisse ändern:

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)) : ""; 
} 
Verwandte Themen