Konvertieren Sie DateTime in String PHP


225

Ich habe bereits viele Websites darüber recherchiert, wie ich ein PHP DateTime-Objekt in einen String konvertieren kann. Ich sehe immer "String to DateTime" und nicht "DateTime to String"

PHP DateTime kann wiedergegeben werden, aber was ich meine DateTime mit PHP-String-Funktionen verarbeiten möchte.

Meine Frage ist, wie ich PHP dateTime Object zu einer Zeichenfolge machen kann, die mit dieser Art von Code beginnt:

$dts = new DateTime(); //this returns the current date time
echo strlen($dts);

2
Warum möchten Sie Ihre DateTime mit Zeichenfolgenfunktionen verarbeiten? Was versuchst du zu erreichen?
mgiuffrida

2
eine Art Datum / Uhrzeit-Validator? in PHP
Netorica

Antworten:


412

Sie können die formatMethode der DateTimeKlasse verwenden:

$date = new DateTime('2000-01-01');
$result = $date->format('Y-m-d H:i:s');

Wenn formatdies aus irgendeinem Grund fehlschlägt, wird es zurückgegeben FALSE. In einigen Anwendungen kann es sinnvoll sein, den Fehlerfall zu behandeln:

if ($result) {
  echo $result;
} else { // format failed
  echo "Unknown Time";
}

3
+1 Es funktioniert. Können Sie bitte auch sagen, wie Sie vor dieser Konvertierung nach null (in derselben Zeile) suchen sollen? Vielen Dank!
Watt

2
Hey @Watt, guter Punkt! Ich habe das Beispiel erweitert, um zu zeigen, wie der fehlerhafte Fall behandelt werden kann.
rjz

3
Sie haben die Zeitzone vergessen, verwenden Sie stattdessen $date->format('c')oder $date->format('Y-m-d H:i:s Z')oder$date->format('Y-m-d H:i:s T')
Timo Huovinen

1
Welche using-Anweisung benötigen Sie, um -> format verwenden zu können? Es heißt, dass in Zend
Chemist

1
Sie können dieses kürzere Formular $result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s');seit PHP 5.4 verwenden. Sehen Sie hier: docs.php.net/manual/en/migration54.new-features.php Der Zugriff von
FFirmenich

17

Der einfachste Weg, den ich gefunden habe, ist:

$date   = new DateTime(); //this returns the current date time
$result = $date->format('Y-m-d-H-i-s');
echo $result . "<br>";
$krr    = explode('-', $result);
$result = implode("", $krr);
echo $result;

Ich hoffe, es hilft.



15

Es gibt einige vordefinierte Formate date_d.php, die mit formatwie folgt verwendet werden können :

define ('DATE_ATOM', "Y-m-d\TH:i:sP");
define ('DATE_COOKIE', "l, d-M-y H:i:s T");
define ('DATE_ISO8601', "Y-m-d\TH:i:sO");
define ('DATE_RFC822', "D, d M y H:i:s O");
define ('DATE_RFC850', "l, d-M-y H:i:s T");
define ('DATE_RFC1036', "D, d M y H:i:s O");
define ('DATE_RFC1123', "D, d M Y H:i:s O");
define ('DATE_RFC2822', "D, d M Y H:i:s O");
define ('DATE_RFC3339', "Y-m-d\TH:i:sP");
define ('DATE_RSS', "D, d M Y H:i:s O");
define ('DATE_W3C', "Y-m-d\TH:i:sP");

Verwenden Sie wie folgt:

$date = new \DateTime();
$string = $date->format(DATE_RFC2822);

3
Sie können die Konstante DateTime (z. B. DateTime :: ISO8601) verwenden, um das Lesen des Codes zu erleichtern.
Anh-Tuan Mai

2

Kürzere Art und Weise mit Liste. Und Sie können mit jeder Datumskomponente tun, was Sie wollen.

list($day,$month,$year,$hour,$min,$sec) = explode("/",date('d/m/Y/h/i/s'));
echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec;

2

Es hat bei mir funktioniert

$start_time   = date_create_from_format('Y-m-d H:i:s', $start_time);
$current_date = new DateTime();
$diff         = $start_time->diff($current_date);
$aa           = (string)$diff->format('%R%a');
echo gettype($aa);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.