it-swarm.com.de

Konvertiere von MySQL datetime in ein anderes Format mit PHP

Ich habe eine datetime -Spalte in MySQL.

Wie kann ich es mit PHP in die Anzeige MM/TT/JJ H: M (AM/PM) konvertieren?

429
Tim Boland

So konvertieren Sie ein von MySQL abgerufenes Datum in das angeforderte Format (mm/dd/yy 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

Informationen zum Anpassen des Formats finden Sie unter PHP-Datumsformatierungsoptionen .

299
Tim Boland

Wenn Sie nach einer Möglichkeit suchen, ein Datum in das MySQL-Format zu normalisieren, gehen Sie wie folgt vor

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

Die Zeile $phpdate = strtotime( $mysqldate ) akzeptiert eine Zeichenfolge und führt eine Reihe von Heuristiken aus, um diese Zeichenfolge in einen Unix-Zeitstempel umzuwandeln.

Die Zeile $mysqldate = date( 'Y-m-d H:i:s', $phpdate ) verwendet diesen Zeitstempel und die Funktion date von PHP, um diesen Zeitstempel wieder in das Standard-Datumsformat von MySQL umzuwandeln.

( Anmerkung des Herausgebers : Diese Antwort ist hier aufgrund einer ursprünglichen Frage mit verwirrendem Wortlaut und der allgemeinen Nützlichkeit von Google, die diese Antwort lieferte, auch wenn sie nicht direkt beantwortet wurde die Frage, die jetzt existiert)

498
kta

Wenn Sie PHP 5 verwenden, können Sie es auch versuchen

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

Hinweis: http://php.net/manual/en/function.date.php

43
Tony Stark

Endlich die richtige Lösung für PHP 5.3 und höher: (optionale Zeitzone zum Beispiel hinzugefügt, wie in den Kommentaren erwähnt

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date, new \DateTimeZone('UTC'));
$date->setTimezone(new \DateTimeZone('Europe/Berlin')); // optional
echo $date->format('m/d/y h:i a');
22
Hasenpriester

Eine einfachere Möglichkeit wäre, das Datum direkt in der MySQL-Abfrage zu formatieren, anstatt in PHP. Siehe MySQL-Handbucheintrag für DATE_FORMAT .

Wenn Sie es lieber in PHP machen möchten, benötigen Sie die Funktion Datum , aber Sie müssen zuerst Ihren Datenbankwert in einen Zeitstempel konvertieren.

12
flash

Vergiss alles. Benutz einfach:

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

Um ein DateTime -Objekt in PHP für das Speichern in MySQL korrekt zu formatieren, verwenden Sie das von MySQL verwendete standardisierte Format ISO 8601 .

PHP hat dieses Format seit Version 5.1.1 als Konstante gespeichert, und ich empfehle dringend, es zu verwenden, anstatt die Zeichenfolge jedes Mal manuell einzugeben.

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

Diese und eine Liste anderer PHP DateTime-Konstanten finden Sie unter http://php.net/manual/en/class.datetime.php#datetime.constants.types

9
Greg

Dies sollte ein Feld in einer SQL-Abfrage formatieren:

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

Verwenden Sie die Datum Funktion:

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

Abhängig von Ihrer MySQL datetime Konfiguration. Normalerweise: 2011-12-31 07:55:13 Format. Diese sehr einfache Funktion sollte die Magie tun:

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

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

Oder etwas voraus, um der Frage zu entsprechen.

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

Wenn Sie nicht jede Funktion in Ihrem PHP Code ändern möchten, um das erwartete Datumsformat anzuzeigen, ändern Sie es an der Quelle - Ihrer Datenbank.

Es ist wichtig, die Zeilen mit dem Operator als zu benennen, wie im obigen Beispiel (als dateFrom, als dateUntil). Die Namen, die Sie dort schreiben, sind die Namen, die Zeilen werden in Ihrem Ergebnis aufgerufen.

Die Ausgabe dieses Beispiels ist

[Tag des Monats, numerisch (0..31)]. [Monatsname (Januar..Dezember)]. [Jahr, numerisch, vierstellig]

Beispiel: 5.August.2015

Ändern Sie die Punkte mit dem Trennzeichen Ihrer Wahl und überprüfen Sie die Funktion DATE_FORMAT (Datum, Format) für weitere Datumsformate.

5
Rangel

Sie können Ihre Abfrage auch die Uhrzeit als Unix-Zeitstempel zurückgeben lassen. Das würde die Notwendigkeit beseitigen, strtotime() aufzurufen und die Dinge auf der Seite PHP etwas weniger intensiv zu machen ...

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

Verwenden Sie dann in PHP einfach die Funktion date(), um sie nach Belieben zu formatieren.

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

oder

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

Ich mag diesen Ansatz im Gegensatz zur Verwendung der DATE_FORMAT -Funktion von MySQL , da Sie damit dieselbe Abfrage zum Abrufen der Daten wiederverwenden und die Formatierung in PHP ändern können.

Es ist ärgerlich, zwei verschiedene Abfragen zu haben, um die Darstellung des Datums in der Benutzeroberfläche zu ändern.

3
phatduckk

Sie können Probleme mit Daten haben, die nicht in Unix Timestamp zurückgegeben wurden. Das funktioniert also für mich ...

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

Das wird funktionieren...

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
1
Mihir Vadalia

Unter Verwendung von PHP Version 4.4.9 & MySQL 5.0 funktionierte dies für mich:

$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate

PubDate ist die Spalte in MySQL .

0
user216189