576 Stimmen

NOW()-Funktion in PHP

Gibt es eine PHP-Funktion, die das Datum und die Uhrzeit im gleichen Format wie die MySQL-Funktion NOW() ?

Ich weiß, wie man es macht, indem man date() aber ich frage, ob es eine Funktion nur für diesen Zweck gibt.

Zum Beispiel, um zurückzukehren:

2009-12-01 00:00:00

28voto

streetparade Punkte 30394

Versuchen Sie dies:

date("Y-m-d H:i:s");

21voto

santi Punkte 512

Ich war auf der Suche nach der gleichen Antwort und habe diese Lösung gefunden für PHP 5.3 oder höher:

$dtz = new DateTimeZone("Europe/Madrid"); //Your timezone
$now = new DateTime(date("Y-m-d"), $dtz);
echo $now->format("Y-m-d H:i:s");

19voto

Richard87 Punkte 1542

Eine weitere Antwort, die mir leicht fällt:

echo date('c');

// 2015-07-27T00:00:00+02:00

Dies ist ISO 8601 Datum (hinzugefügt in PHP 5) die MySQL verwendet

Modifier

MySQL 5.7 erlaubt standardmäßig keine Zeitzone in der Datetime. Sie können den Fehler mit SQL_MODE=ALLOW_INVALID_DATES . Weitere Einzelheiten finden Sie in der Antwort hier: https://stackoverflow.com/a/35944059/2103434 . Das bedeutet aber auch, dass die Zeitzone beim Speichern in der Datenbank verloren geht!

Standardmäßig verwendet MySQL die Zeitzone des Systems, und solange PHP die die gleiche Zeitzone sollte es dir gut gehen. In meinem Fall CET / UTC+2.

Das bedeutet, dass ich, wenn ich ein 2015-07-27T00:00:00+02:00 zur Datenbank, nur 2015-07-27T00:00:00 gespeichert werden (aber das ist die korrekte Ortszeit!).

Wenn ich die Zeit wieder in PHP lade,

$importedDate = new \DateTime('2015-07-27T00:00:00')

wird er automatisch annehmen, dass es sich um +02:00 Zeitzone, da dies die Standardeinstellung ist. Beim Drucken wird sie wieder korrekt sein:

echo $importedDate->format('c');
// 2015-07-27T00:00:00+02:00

Um auf Nummer sicher zu gehen, verwenden Sie auf dem Server immer UTC, geben Sie es in MySQL und PHP an und konvertieren Sie es erst dann in das Gebietsschema des Benutzers, wenn das Datum angezeigt wird:

date_default_timezone_set('UTC');
$importedDate = new \DateTime('2015-07-27T00:00:00+02:00');
echo $importedDate->format('c');
// 2015-07-27T00:00:00+02:00

$importedDate->setTimezone(new \DateTimeZone("America/New_York"));
echo $importedDate->format('c');
// 2015-07-26T18:00:00-04:00

16voto

Shriganesh Shintre Punkte 2210

MySQL-Funktion NOW() gibt den aktuellen Zeitstempel zurück. Die einzige Möglichkeit, die ich für PHP gefunden habe, ist die Verwendung des folgenden Codes.

$curr_timestamp = date('Y-m-d H:i:s');

15voto

Utilice strftime :

strftime("%F %T");
  • %F ist dasselbe wie %Y-%m-%d .

  • %T ist dasselbe wie %H:%M:%S .

Hier ist eine Vorführung auf ideone.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X